Jump to content

Sonjli

Members
  • Content Count

    94
  • Joined

  • Last visited

Posts posted by Sonjli


  1. Hello,

    I have a strange behaviour when I add a new parameter in a method.

    My method has 2 params like this

    procedure TForm1.Test(
      const par1: Integer;
      const par2: string
      );
    begin
      // ...
    end;

    I add the new param with

    image.thumb.png.f1b1c16a800beb5715a538c3140d46d9.png

     

    The result is a wrong formatted code:

    procedure TForm1.Test(const Par1: Integer; const Par2: string; const NewParam:
        Integer);
    begin
      //
    end;

    The more params there are, the worst is the formatting...

     

    I would like to maintain the same formatting for my params.

     

    Any hint?

     

    Thanks,

    Eddy


  2. I don't know if this is the right place. Sorry in advance if I did a mistake.

    - Delphi 10.4.1

    - GExperts 1.3.18

    - Always when close appear an error similar "Error in expert 18". It is favorites file

    - After this error, Delphi never closes and a lot of AV comes from hell 🙂

    - Tried to disable the expert with no success

    - I have never used this expert
    - I removed from DPR of the last SVN commit all the uses about favorites and recompile

    - No more errors

     

    • Thanks 1

  3. Hello,

    I don't know how I can pass an anonymous function inside a omniTask.

    Example:

     

    type
    	TMyObject = class
        	[...]
        end;
    	
        TMyFunction = reference to function(const Arg1: string): TMyObject;
        
    var
    	lFunc: TMyFunction;
        
    procedure Something;
    begin
    	lFunc := function(const Arg1: string): TMyObject
        begin
        	result := TMyObject.Create(Arg1);
        end;
        
    	CreateTask(
        procedure(Task: IOmniTask)
        var
        	lthdFunc: TMyFunction;
            lResult: TMyObject;
        begin
        	lthdFunc := Task.Params['MyRefFunction'].As???; // <-- What here?
            lResult := lthdFunc('dummy');
        	[...]
        end
        )
        .SetParameter('MyRefFunction', lFunc)
        .Run;
    end;

    Thanks in advance,

    Eddy.


  4. Hello,

    I hope this is the right topic.

    I am looking for a tool for creating web dashboards starting from Firebird databases.

    I used some time ago Grafana (https://grafana.com/) but it has not driver for Firebird\Interbase and similar.

    Do you know any tool that permits the user creation of a query and customization of result data?

    I don't need a compelete BI, just a web tool to custom-create data analytics (pies, linears, etc) with Firebird.

    Thanks.

    Eddy


  5. I try to better explain my problem. I understand the last question was a bit (lot...) stupid 😉

    I need to know if the receiver task is alive.

    In some cases the receiver task has gone so I continue to send messages to it and I receive this error: "TOmniCommunicationEndpoint.Send: Queue is full"

    How can I avoid this problem? I would like to do something like this:

    if not MyTask.IsDead then
    	MyTask.Comm.Send(...)
    
    // or
    
    if WatchDog(MyTask) <> Dead then
    	MyTask.Comm.Send(...)
        
    // where WatchDog can check the healty of the Task and the MyTask.Comm.Writer.IsFull

    Thanks in advance,

    Eddy


  6. Hi,

    I hardly use tasks comm.

    A very simple question: is this code right?

    if lTask.Comm.Writer.IsFull then
    begin
    	lLocalLogger.Debug(Format('Task Queue is FULL %s...', [lTask.Name]), lSenderLogTagMain);
    	Sleep(1000);
    	...
    end
    else
    	lTask.Comm.Send(WM_RECEIVE_DO, TOmniValue.CastFrom < IBroadcastMessage < TDataPacketBody >>(ABroadcastMessage));
    ...
    

     


  7. On 5/21/2021 at 9:32 AM, Fr0sT.Brutal said:

    Why changing properties at build stage? I guess they should be checked before committing to VCS.

    Hi,

    yes I'd prefer this. How do you do this?

    GExperts does this before compiling or building.


  8. Hello,

    I have an automation system to deploy a big application.

    In this automation system I build some projects in Delphi.

    I use the "Set Component Properties" of GExperts to update some properties before the build process. I do this "by hand" setting this:

    1518299010_Schermatada2021-05-0609-41-34.thumb.png.0a16c182b4dafe4063178a8915702fc6.png

    Is it possible to use a command line for any tool of GExperts? Or an sdk to implements this?

    Thanks,

    Eddy


  9. 7 hours ago, David Heffernan said:

    I'm not sure what you want to do. Do you want to read the XML quickly? Or do you want to read the XML without using CPU resources? Because it seems like you want to do both but of course you can do one or the other but not both. 

    I need to read the XML quickly. But the server administrator warn me often about high cpu. I understand your axiom.

    I use Neslib.Xml and it seems well done both in performance and resource utilization. So you recommend me to say to sa to "put his heart in peace"...

    24 minutes ago, Fr0sT.Brutal said:

    Show us your code, probably it could be optimized though I wouldn't count on great improvement. Reading and manipulating big XML is always quite slow

    I can publish the problematic loops but, as you write, the "problem" is implicitly the XML library.

     

     

    Thanks guys.


  10. Hello,

    I have a task with three nested loops using an XML library to read some parts of a big XML.

    This loop is too tight and processor works between 20% and 30% only for this process.

    The "sleep" is not a solution because the XML must be read very quickly.

    Is there any other solution to avoid the use of so much processor?

     

    Thanks,

    Eddy


  11. 5 hours ago, jbg said:

    The WebInstaller detection in IdeFixPack looks at a specific environment variable but that variable is also set of you start the IDE with Administrator rights or if some other program added the environment variable. (I don't remember what env-var it is and I don't the the source code at hand where I am right now)

     

    The WebInstaller detection code was removed in the last development snapshot:

    https://idefixpack.de/fixpack/dev

    But be aware that the development snapshot may crash the IDE more often as it is not tested.

    Thank you very much. IDEFixPack is a must have. Problem solved. I will pay attention about instability.

    The problem with the CompilerSpeedPack dlls remains... I disabled them as I don't use. What can be the problem?

     

    Eddy


  12. Hello,

    from this morning IDEFixPack 6.4.4 stop working on my IDE. I don't know what's changed. It's weird. Since today I never reinstall the expert, and never had any issue.

    The error is in attachments.

     

    Infos:

    - Windows 10 professional - 2004 (May updates)

    - Delphi 10.3.3 full patched

    - I always install with ISO, NOT Webinstaller. I NEVER used webinstaller in my life

    - I start the IDE "as administrator".

    - I restarted the pc but nothing changes

    - More weird: I uninstalled and reinstalled the 6.4.4 and from there the errors multiplied (more attachments).

    - The DLLs BPLs and everything are in their right place (C:\Users\Public\Documents\Embarcadero\Studio\20.0\Experts\). Checked also with GExperts "Expert Manager" and in registry

    - If I start the IDE NOT "as administrator" the problem with DLLs CompilerSpeedPack remains, but IDEFixPack starts correctly

     

    What's going on?

    Anyone knows this behaviour?

     

    Thanks,

    Eddy

     

    Schermata da 2020-09-03 09-21-15.png

    Schermata da 2020-09-03 09-25-44.png

    Schermata da 2020-09-03 09-26-02.png

    Schermata da 2020-09-03 09-26-18.png


  13. 19 hours ago, Anders Melander said:

    Apartment threading just means that ingoing COM calls are executed on the main thread. This is like using TThread.Synchronize to ensure that code that isn't thread safe is executed in the context of the main thread. If your code is thread safe or if you are sure that you're not using callbacks (e.g. COM events) then COINIT_MULTITHREADED  is probably fine. 

    I DO use COM events... so, should I change COINIT_MULTITHREADED in COINIT_APARTMENTTHREADED?

    Can this make server unstable?

    Remark: the server is no more reachable from other clients until I close my "buggy" ntservice. When this issue happens, I stop my ntservice and the other clients connects correctly.

    I doubt it is a server issue, I am barely sure I am doing something wrong.


  14. 1 hour ago, Anders Melander said:

    I think you need to post some more code and some more details.

    • Does the OleCheck ever raise an exception? If so how do you handle this exception?
      • Never, I log this
    • Are you sure that you shouldn't be using COINIT_APARTMENTTHREADED  instead?
      • Every NTService create a lot of threads, so I think COINIT_MULTITHREADED is the right choice... I think...
    • Are you sure there's a CoUninitialize for every CoInitializeEx?
      • No. I am very angry. I didn't see this
    • How does the server disconnect the client?
      • Mistery. It's a third party server. Poor documentation
    • Have you tried debugging the server to determine what it's doing when it "hangs"?
      • The logs of the server resides in a remote machine. The machine is a CNC. Very hard to get inside...

     


  15. Hello,

    I hope not to be out of topic...

    I have a COM client (developed as NTService) that every 5 minutes need to reconnect to server (don't ask me why... the COM server kick out clients for "security" every 5 minutes).

    In every "connect" I do this: OleCheck(CoInitializeEx(nil, COINIT_MULTITHREADED))

    Can this be a problem? I see that sometimes, after 30/40 reconnections, the COM server seems "locked". No other clients can connect correctly to the server until I kill my NTService.

    It is not fault of the "security" system, because I still tested that.

    Any ideas?

    Ask me for infos if you need.

     

    Thanks in advance,

    Eddy

×