Jump to content

Keesver

Members
  • Content Count

    86
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Keesver

  1. Keesver

    Registering user activity?

    At the Dutch Delphi day a few weeks ago, Bob Swart presented CodeSite which can do this (CodeSite - RAD Studio (embarcadero.com)). Especially the real time tracking whereby log events were sent directly to a central server showed that user interactions with the application could be tracked in (nearly) real time.
  2. Keesver

    Automating Delphi FMX based application

    What exactly do you want to 'automate'?
  3. Keesver

    I'm missing some nuance..

    You are accessing variable 'Components' as if it where an array, but it is declared like a reference to a TComponent. I think you want to redeclare your function like: type TComponentArray = array of TComponent; function SetDBSessionNames(const ComponentCount: Integer; const Components: TComponentArray; const sSessionName: string): boolean;
  4. Maybe this link helps: node.js - Error: unable to verify the first certificate in nodejs - Stack Overflow
  5. Keesver

    Update an application automatically

    Yes we have this issue too, our icon is not transparent as well. We haven't investigated it though and accepted it so far.
  6. Keesver

    Passing data between sockets

    I can remember seeing a method or class in Indy which allowed me to connect an incoming socket to an outgoing socket directly so that data flows from in to out. However I can't remember the name or file where I can find it. Any ideas?
  7. Keesver

    Passing data between sockets

    Thanks, will check it out
  8. Keesver

    Migrating projects from Delphi to .Net

    Checkout RemObjects Elements, you should be able to re-compile much of your Delphi code to .Net (Elements. Build native projects for any modern development platform, using the language(s) of your choice. Oxygene (Object Pascal), C#, Swift, Java, Go. | RemObjects Software).
  9. Keesver

    Update an application automatically

    Support for appinstaller is available since W10 (see Troubleshoot installation issues with the App Installer file - MSIX | Microsoft Learn). We have had issues in the past with the auto update feature (users had to restart their computer before the auto update would work) but that has been fixed by MS. We still support both update processes side by side having two separate installers. If you need to support W7 and W8 I think there is no way around this.
  10. Keesver

    Update an application automatically

    In the past we always did our own auto updating using a similar approach as presented here (rename exe, download new version, then restart). This works as long as the the application is installed inside the user profile, not when it gets installed in 'Program files'. Nowadays we let Windows handle this using an MSIX installer accompanied by an .appinstaller file (you can configure auto update behavior from the appinstaller file). In my experience, using the .appinstaller gives a much better user experience than any other method.
  11. Be careful with Mida. From my experience the software is not working. Although it can still be purchased, it won't run because at startup the software cannot contact their license server and then stops. I tried contacting the developer many times, never had a response.
  12. Keesver

    function returning interface

    I think this should work: var F: IFoo; Supports(DialogManager.CreateDialog(IMyDialog), IFoo, F);
  13. Yes, works with FMX and VCL, but Windows only.
  14. The first step would be to get more detailed 'crash' information. We use madExcept in all our software to do this (there are others too) which provides a solid stack trace when an exception occurs. Without such info you don't know what to look for....
  15. Keesver

    Program credentials on Citrix

    In Citrix users are not allowed to start executables if they are not properly installed inside the system. Normally users are not allowed to install software themselves. So you should discuss with the hosting company if they can install your application into the Citrix image so that it becomes available to the users. If that is not an option, you can make your application available online using software like Thinfinity.
  16. Hello, Which solutions are available to virtualize Delphi applications so that it can be accessed from a browser? We are currently using VirtualUI (https://www.cybelesoft.com/) but experience some technical issues. I wonder if alternatives are available. Thanks for your tips and ideas Kees
  17. Keesver

    Application virtualization (RDP)

    ok, good to hear, maybe our setup is different. We use a Windows 2019 datacenter, Gen 2 server. We now have a single server running, but are moving into a load balanced multi server setup. Do you have any experience with this?
  18. Keesver

    Application virtualization (RDP)

    This looks more like a remote desktop solution and needs local software. With Thinfinity we can access a single application from the browser on the remote server. There is not even a login process required.
  19. Keesver

    Application virtualization (RDP)

    Yes I mean Thinfinity, we have issues with starting new sessions, sometimes they will not launch (they hang on the 'loading' screen). We are working on this with them so I expect it to be fixed.
  20. Hello, I'm using a TIdHTTPProxyServer component to create a proxy server for our application. Unfortunately the proxy server frequently blocks communication. As a test, I put a TIdHTTPProxyServer on a form and use this proxy i.c.m. with a call to a RemObjects server. I added an interceptor to log the output of the proxy component (see attachment). From this file I can see that the proxy server hangs on this call (see also attachment): 127.0.0.1:12719 Stat Connected. 127.0.0.1:12719 Recv 12/08/2022 15:59:26: POST http://service.a-dato.net:80/handler.ashx/binmessage HTTP/1.1 Host: service.a-dato.net Keep-Alive: 300 Proxy-Connection: keep-alive User-Agent: Remoting SDK Content-Type: text/html Content-Length: 17 Accept-Encoding: identity Connection: keep-alive }Ðm�BÐ�@�Fx8‘¯®V� (data is binary) Comments: The first call to the server succeeds The problem comes on subsequent calls to the server (pressing 'Call service (8081)' multiple times) This problem only occurs when I use 'http' (using 'https' it works) It works when I use no proxy It works when I use another proxy (the second button will use Fiddler as a proxy server) When you run the test application, a logfile is written to 'c:\Temp\Log' I have attached a test application to replicate the problem. Thanks for your support and comments. Kees SimpleProxy.log ProxyTestMain.zip
  21. To comment on this question, we are using FMX and Delphi (11.1) to build a Windows/Android/IOS app. We are pretty satisfied with the support, development process and stability of the application. One source/multi platform works very well for us. See this link Lynx X - Apps op Google Play. You are welcome to talk to our developers to share ideas or learn how we do stuff with Delphi 11.1
  22. Keesver

    TIdHTTPProxyServer hangs when used with RemObjects

    Yes, it works OK now. Thanks for taking the time explaining the workings of Http and Indy. I have learned a lot over the past few days. I now have my reverse proxy working. Greetings, Kees
  23. Keesver

    TIdHTTPProxyServer hangs when used with RemObjects

    Remy, thanks for your comments again. I got it working now. After adding extra logging I saw some strange behavior myself. RemObjects is sending 'keep-alive' messages and at some point the connection gets closed immediately after reading the POST request: 127.0.0.1:50782 Recv 8/17/2022 1:38:48 AM: POST http://service.a-dato.net:80/handler.ashx/binmessage HTTP/1.1 Host: service.a-dato.net Keep-Alive: 300 Proxy-Connection: keep-alive User-Agent: Remoting SDK Content-Type: application/octet-stream Content-Length: 17 Accept-Encoding: identity Connection: keep-alive R�R ìF+F„�ò${n¼�� 127.0.0.1:50782 Stat Disconnected. Start call: 6 Port: 50782 Addr: 4437F28 Sent call: 6 Port: 50782 Addr: 4437F28 (See log file, line #190) The log shows that port 50782 gets closed right after retrieving the POST request from the client, still CommandPassThrough is getting called which will then raise the 'Connection closed gracefully' exception. Doing some more testing, I found that the port gets closed here: IdCommandHandlers.pas, line #507 if LCommand.Disconnect then begin AContext.Connection.Disconnect; end; I therefore updated TIdHTTPProxyServer.InitializeCommandHandlers and set Disconnect to False: LCommandHandler := CommandHandlers.Add; LCommandHandler.Command := 'POST'; {do not localize} LCommandHandler.OnCommand := CommandPassThrough; LCommandHandler.ParseParams := True; LCommandHandler.Disconnect := False; // <= Set to False And....it works!! Question: Should the command handler Disconnect? Are there any side effects to this change? Full log file added again. ProxyLog.txt
  24. Keesver

    TIdHTTPProxyServer hangs when used with RemObjects

    I do not know how that should work. Http requires that the remote server closes the connection to signal the call has completed. Forcing a CONNECT keeps the connection alive and breaks the flow between client and server. The client keeps waiting for the disconnect to happen, before completing a call to GET/POST.
  25. Keesver

    TIdHTTPProxyServer hangs when used with RemObjects

    I enabled all exceptions in Delphi and learned that a 'Connection closed gracefully' is raised during the communication, once this exception is raised, the communication hangs. Could it be that TIdHTTPProxyServer is re-using a closed socket? I have attached another log file that seems to prove it does. This logs ends with: Reading call: 10 0.0.0.0:0 Stat Disconnected. To investigate, I logged the address of the IdContext used in each call (inside the logfile shown as 'Start call: 8 Port: 49877 Addr: 3928120'). This shows that the connection used in call 10 was previously used in call 8. Call 8 succeeded, while 10 fails. I tried setting TIdHTTPProxyServe.ReuseSocket to 'rsFalse' but this does not make a difference. Hope this helps someone to understand the issue... ProxyLog.txt
×