Jump to content

FPiette

Members
  • Content Count

    1120
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by FPiette

  1. FPiette

    No exception handling with server crash

    When the exception occurs, is fault offset always the same (I mean with the same executable)? If it is, try setting a data breakpoint at that address so that the debugger stops when the location is changed.
  2. FPiette

    No exception handling with server crash

    From your description, the heap corruption you experience is a Windows heap corruption, not a Delphi heap corruption. Do you mean the crash happens during the execution of SSL_free(FSsl), or right after it returns or sometimes later? Are you sure FSsl is not corrupted or already freed?
  3. FPiette

    No exception handling with server crash

    I think crash dump contain the call stack. You need to create the map file with Delphi to be able to find what the addresses show in the crash dump are pointing to. Do you have tried with the remote debugger? Do you have tried with WinDbg? https://marc.durdin.net/2015/11/windbg-and-delphi-a-collection-of-posts/ https://github.com/andremussche/map2dbg
  4. FPiette

    No exception handling with server crash

    Probably not easy to do, but have a look at https://forums.ivanti.com/s/article/How-to-set-up-for-capturing-Heap-Corruption-dumping-at-the-point-it-occurs?language=en_US
  5. FPiette

    Printer ip

    You should better explain the PC connection to the ISP and the printer connection to the ISP. Usually, there is a router and that device know the external (public) IP address. I don't think there is a generic API that works with all routers. There are external server that show your external (public) IP on a web page the return to you. For example try this: https://www.whatismyip.com/ If they don't provide an API, you can always use a HTTP component to get the page at that URL and parse the returned HTML to extract your IP address.
  6. Those values in square brackets are custom attributes. Have a look at the documentation : https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Declaring_Custom_Attributes_(RTTI)
  7. FPiette

    ICS V8.69 announced

    I'm happy it worked for you. Maybe you should do a full Delphi reinstall ?
  8. FPiette

    ICS V8.69 announced

    There is no "IgnoreExitCode" parameter in the project. Actually, I don't even know about that parameter in projects or IDE. The error you see comes from MSBuild. The IDE generate a MSBuild script based on project and IDE options. Somehow you have something wrong there. I have no idea what but maybe you have an IDE extension (Sometimes called an IDE wizard or expert) that modify thing on the fly. Maybe there is a bug in the IDE we have not seen ourself. Verify that you installed all IDE updates. In the IDE "about box" you should see "Embarcadero® Delphi 11 Version 28.0.44500.8973" and also "Delphi 11 and C++Builder 11 Update 1" as I do.
  9. FPiette

    ICS V8.69 announced

    On which project does this occur?
  10. FPiette

    String on heap?

    You make thing to complex. Delphi strings are reference counted with copy-on-write.
  11. FPiette

    Which Package to Install

    Look in the "install" directory: you'll find project groups for various combinations of VCL and/or FMX. That is stated in the ReadMe8.txt file. About the two entries in GetIT, that is Embarcadero stuff. This is the same ICS for moth FMX and VCL. They just separated VCL from FMX. I don't know why. And by the way, GetIT is not updated frequently. It is better to download ICS from OverByte webite. See http://wiki.overbyte.eu/wiki/index.php/ICS_Download.
  12. One more note : UDP is - by design - an unreliable protocol. There is nothing in the protocol that check for lost packet or receive on twice. So you must take that into account. On a LAN it rarely loose packets, only when there is a congestion. If you need, you must design your own UDP based protocol that somehow check if data sent is received. If you need to send information reliable, then use TCP which is - by design - a reliable protocol with error detection and correction, re-transmitting if needed. If the protocol can't correct the error, you get an error returned to the application. So my advice is: use UDP from his broadcasting feature to discover the computers and then use TCP to transmit data (peer-to-peer).
  13. There are several possibilities: 1) You get the IP or hostname of each computer in the LAN. You told us you can do it. 2) You write your program with a TWSocket listening on UDP broadcast (See OverbyteIcsUdpLstn demo project). Beside listening, your program will periodically do a broadcast to say "Hey I'm here" (We call that advertizing of service)(See OverbyteIcsUdpSender demo project). That way, each program will know all others on the LAN (UDP broadcast do not go outside of the LAN). One broadcasted message could also say "Hey, who is there?". The receiving program will answer immediately with a message "Hey I'm here". 3) If you need to know the all the PC running your program only once, you can use a port scanner to check all IP on the LAN that listen to a given port. This could be slow or very slow for large LAN. Port scanner can be found for free, Google is your friend. Does it helps ?
  14. Are using the sample code provided with ICS to test or do you use your own code ?
  15. FPiette

    Dynamic class member names

    I think the easiest is to write a post and pre-processor for JSON. After producing the JSON, you pass it thru the post-processor which will obfuscate it. At the other side when you get the obfuscated JSON, you unobfuscate it with the pre-processor.
  16. I can confirm that using ICS demo OverbyteIcsHttpsTst.dproj, the authentification works correctly (Using the credentials that has been sent to me) and the request is sent correctly. The server response with a "server fault", probably because of an incorrect request. The error message is in Czech and I don't read that language. I noticed that the server requires TLSV1.2 or TLSV1.3, nothing else. Now Karel should start from the demo and remove any code he doesn't need, step by step, checking each step to see if he removed something required.
  17. You should also publish your sample here, greying out (but not remove) any credential information.
  18. You can easily find my email in ICS source code.
  19. In your Yamaco1request.txt, I don't see the the same http header lines, including Authorization which is at least needed. Your code is wrong. Please post a complete, small, minimalist example of code which reproduce the problem you have.
  20. In addition to what Angus said, it is possible that the web server make use of cookies and you must handle those properly. A way to debug the issue is to use WireShark to spy on the dialog between SopaUI and the server, and then on the dialog between you ICS powered application and the server. Looking at the differences will surely help.
  21. No, it is a forward declaration. The class itself is declared after TDrawingObject. That declaration is enough for the compiler to know it has to reserve space for the class field (Actually a pointer). The code accessing the property DrawingObjectList is in the implementation section and after both classes have been completely defined.
  22. As long as you avoid or detect recursive infinite loops, then it is OK.
  23. FPiette

    ICS Delphi DataSnapBridge

    Maybe this will help:
  24. FPiette

    Waiting for something without blocking the UI

    You could use a non-blocking asynchronous TCP component such as ICS (TWSocket and other for high level protocols). With ICS, methods like Connect, Send, Receive and other are not blocking, they are merely a request which are almost instantaneous. Later when connection is established, data received or sent, you have an event. The UI is never blocked, even with hundreds of active connections. No need to use thread of wait loop (Of course you may use both if you like complexity). You can install ICS from the IDE using GetIT, or download a zip file, or use the SVN repository. Have a look at http://wiki.overbyte.eu/wiki/index.php/ICS_Download. Dephi-Praxis has an ICS dedicated support forum : https://en.delphipraxis.net/forum/37-ics-internet-component-suite/
  25. FPiette

    Class with own Thread

    You don't need to put the whole class in a thread. Just put the blocking call in the thread. Or use a non-blocking component to do the REST communication, such as ICS.
×