Jump to content

Angus Robertson

Members
  • Content Count

    1812
  • Joined

  • Last visited

  • Days Won

    33

Everything posted by Angus Robertson

  1. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    The magic is: unit Ics.Fmx.OverbyteIcsWndControl; {$DEFINE FMX} {$DEFINE ICS_INCLUDE_MODE} {$I OverbyteIcsWndControl.pas} which is how FMX gets defined and all the units get then built for FMX or VCL. Not sure how VCL.Forms is being dragged in. Angus
  2. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    ICS defines FMX at the top of all Ics.Fmx.xx units, which are built by the FMX runtime package. But I guess should also be in any FMX projects that include other units that are VCL/FMX. Angus
  3. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    I built all the ICS FMX sample projects OK yesterday using the XSamples group, for Windows only, IcsHttpsTst worked fine with SSL once I copied the latest DLLs into that directory. Two server samples need minor fixes that were made to VCL ages ago but forgot FMX, and StrokeThickness has disappeared from Bitmap.Canvas, IcsHttpsTst is a little basic compared to the VCL version, need to add more SSL stuff. I'll look at the other Interlocked stuff, one problem is these are also Windows APIs so removing them from the ICS unit does not stop units building if they also include Winapi.Windows. Angus
  4. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    Change InterlockedExchangePointer to TInterlocked.Exchange, and InterlockedExchangeAdd to TInterlocked.Add, then add System.SyncObjs,to Uses and you should get a little further. Angus
  5. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    I changed all the old InterlockedIncrement to AtomicIncrement, but seems I missed InterlockedExchange which has now gone, Not sure of the modern replacement for InterlockedExchang, hopefully someone watching will know immediately. I've not done the GetTickCount64 stuff yet, the 10.4 runtime has various ticks functions for different platforms, just lots of new conditionals so it works on all platforms. Angus
  6. Angus Robertson

    RansomWare blues

    Layers of protection are good, even multiple firewalls provided there is not too much performance hit. External firewalls also means external logs, mine syslogs to my office systems as well as the rack, so it can not be compromised. Angus
  7. Angus Robertson

    RansomWare blues

    The firewall that blocks RDP from Windows should be external to Windows, not a Windows application, they can be stopped or modified by those that try very hard. I have my own firewall in my rack. Angus
  8. Angus Robertson

    RansomWare blues

    Always best to restrict the remote addresses allowed to access RDP through firewall rules. For remote hosted servers, always make sure at least two address blocks in case your ISP does some renumbering without telling you. Angus
  9. The mail queue sample sends the same message to a list, but each message has different headers with a sing;e To: address. There is no reason you can not queue a different message to each address as well. Which ever way you queue the messages, they are saved as separate messages since they are sent one at time, with multiple attempts if delivery attempts fail. Essentially using the TIcsMailQueue component means you only have to prepare the messages, all the actual SMTP sending is done for you, and that is what you want to duplicate in your own code, why? Angus
  10. No point in looking at the code since it is using the wrong component, for the third time. You are attempting to recreate code that already exists and works in the TIcsMailQueue component. Angus
  11. I told you before to use the Mail Queue sample, which you did, that is specifically designed for exactly what you are trying to do, sending hundreds of emails by queuing them. The sample program allows a list of email addresses to be entered. Beware your email supplier AOL may block your email if it thinks you are behaving like a spammer. you may need a proper email account. Angus
  12. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    All now in SVN, last for this week, OSX32 targets seem to disappear in 10.4 so I guess are now dead. Angus
  13. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    My live 10.4 design packages only have Win32 target, I'll have to double check if master is the same, it should be, I can not add Mac platforms from the IDE, despite having the compiler installed, I'll try hacking the XML. Still can not build since I can not create a connection profile. Though we had MacOS targets before because others have used it okay, so perhaps Delphi deletes them if I modify the package. Angus
  14. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    Excellent, I'll be even happier when you manage to make an SSL connection somewhere, although I've no idea if any the FMX samples still work, never looked at them. Just about to put more stuff into SVN so will do these changes. GetTickCount64 is only used in samples at the moment, system seems to provide 32-bit versions for Posix but not 64-bit. Angus
  15. That is actually part of TSslSocketServer providing you are using IcsHosts to configure it which handles all the SSL stuff for you, even creating a self signed certificate automatically if nothing supplied so it can start and order one from Let's Encrypt. Angus
  16. We have explained why threads are very rarely necessary in ICS applications a few times in this forum. I don't debug such applications. Angus
  17. I would suggest you test the OverbyteIcsIpStmLogTst sample, the demo has a local mode where it acts as both client and server sending packets to each other. I've used this component in several applications for 10 year or more, and SSL connections of days are commom, if they drop the client retries. It will also order and install it's own SSL/TLS certificates. Angus
  18. What is your actual ICS problem? Angus
  19. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    More units in SVN, will be zipped this evening, all the streams, SO and zlib fixes done, also OpenSSL units, wsocket and wsockets, most longword and longints gone. Angus
  20. Angus Robertson

    TFtpClient: Very low speed on transfer data

    Suspect that typo has propagated through a few units with copy/paste..... Angus
  21. Angus Robertson

    TFtpClient: Very low speed on transfer data

    Seems we have a historic problem with TCP buffer receive and send sizes, whose size should ideally depend on “Bandwidth-Delay Product” (BDP) which relates to TCP round trip time and bandwidth. Windows 10 has a default TCP buffer size of 66536, not sure if that is dynamic or fixed. Windows 7 is still 8192 default, or at least my VM is. Some of our components allow buffer sizes to be changed setting a minimum of 1024, with the FTP client component defaulting to 8192. So it actually reduced efficiency. The OverbyteIcsXferTst sample set the size to 32768 but even that is less than the current default. So I'm going through various units changing buffer setting to only increase size and not reduce it, and setting 66536 as the default. Angus
  22. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    Indeed, I was not aware of the LongWord problem until I read the Stack Overflow synopsis of changes for 64-bit iOS, given the minimal information for MacOS64. Angus
  23. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    Except we are not supporting iOS. DCCOSX64 was introduced in 10.3.2 with brief release notes, but never mentioned in What's New. Angus
  24. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    OK, I'll look again, the latest TSteam class is horrible with IFDEF SizeOf, new methods with 32 and 64 extensions and dozens of overloads, out of control. Any changes we make must be compatible back to Delphi 7. Angus
  25. Angus Robertson

    Invalid Compiler Directive: 'MESSAGES'

    gcvt is a Linux and Windows function to convert a floating point double to a string, it should exist, but could be replaced by Delphi Format. I'll look at OverbyteIcsStreams again, but we can not used 64-bit longint, unless Classes is now also using longint instead of Int64. Not sure how much further this conversion is going, it seems LongWord is also 64-bit in MacOS64 and there are a lot of those in the OpenSSL units. Angus
×