Angus Robertson 608 Posted February 13 ICS V9.4 has been released at: https://wiki.overbyte.eu/wiki/index.php/ICS_Download ICS is a free internet component library for Delphi 7, 2006 to 2010, XE to XE8, 10, 10.1, 10.2, 10.3, 10.4, 11 and 12 and C++ Builder 10.4, 11 and 12. ICS supports VCL and FMX, Win32 and Win64 targets. The distribution zip includes the latest OpenSSL 3.0.16, 3.2.4, 3.3.3 and 3.4.1 for Win32 and Win64. Changes in ICS V9.4 include: 1 - Completed the ICS Application Monitoring system added in V9.3, designed to locally and remotely monitor ICS servers and applications, and to locally restart applications on demand or if they crash. It comprises a small TIcsAppMonCli client monitoring component that is added to ICS applications, usually Windows Servers, but also client applications. This client component communicates with a TIcsAppMonSrv server component, usually running as a Windows Service on the same server so it is able to restart applications, but can also support clients on a LAN. The monitoring server has web and Websocket servers, allowing remote browsers to view the state of all applications being monitored by the server with a continually updated web page. There is also ICS Application Monitor - Remote Manager application that provides remote monitoring of multiple ICS Application Monitor servers using Json web and Websocket requests on a single screen. 2 - The SMTP client component fixes a bug introduced in V9.3 which could corrupt the Content-Transfer-Encoding header line. 3 - In TWSocket, fixed a potential problem using multiple threads where a new connection opened very quickly (ie localhost) and then stalled due to an unexpected connection state. Made DataToString Unicode compatible, only used for diagnostic dump logs. 4 - In the HTTP client, fixed a check for an overflowing buffer when receiving very long headers that could cause failure detecting headers end. Made several URL validation functions public: GetProtocolPort, IsSSLProtocol, IsKnownProtocol and IsKnownProtocolURL. 5 - When creating PKCS12/PFX certificates, change the 3DES cipher to AES256 if the legacy provider is not loaded. 6 - In the TIcsFtpMulti component, skip download of zero length file by creating an empty file, previously this got SSL handshake error. Don't report directories as being downloadable, they are not. If extended passive mode allowed, send EPSV ALL at start so firewalls and NAT routers can handle sessions more efficiently. Added CheckBadUnicode property defaults to false, so that checks for bad Unicode to Ansi conversions with ? are skipped, allowing more complex paths without errors. 7 - The FTP server FEAT request now returns EPRT and EPSV which have been supported for IPv6 for years, but were not advertised for IPv4. 8 - The OverbyteIcsSnippets sample adds two new simple REST snippets to Get/Post Parameters that send them to an ICS server, and the server echoes back those params so you can check what was actually sent. 9 - When loading the OpenSSL DLLs, no longer check they are digitally signed for Windows XP, 2003, Vista and 2008, they don't recognise SHA-256 code signing, never tested since no longer have those old versions available. 10 - The TRestParams method AddItemSO to add a SuperObject now has an Escape parameter defaulting to True, so non-ASCII characters are escaped by default. 11 - The Proxy component TProxyTarget now has a SocketFamily property so target connections can be restricted to TSocketFamily values. Added property SrvTotSess count of server session connections for logging. 12 - In the HTTP Application Web Server, fixed a memory leak with multiple virtual PUT and POST documents. 13 - The OverbyteIcsJoseTst sample 'Sign/Verify Data' tests now support hashes other than SHA-256, selected from the Key and Signing Hash Algorithm drop down list. Also, a private key matching that selection is created automatically, including X25519. 14 - There is a new unit OverbyteIcsWinUtils that contains Windows API functions, built from selected Magenta Systems libraries, with functions needed to build and control Windows Service applications, accessing the Windows registry, Windows firewall, Windows tasks, hardware, and with simple encryption for passwords. Most of these functions are used by the TIcsAppMonSrv server component and IcsAppMon sample, but should have much wider use for Windows Service server applications in particular, like allowing firewall access. It's planned to move most other Windows specific function here for ICS V10. 15 - In the ICMP component, fixed a problem setting property PingMsg to the text to ping. 16 - In the TIcsIpStrmLog component, added method ListenStates which for logprotUdpServer and logprotTcpServer returns a multiline string listing the IP, port, SSL and state of all socket listeners. The CurSockets property now reflects actual TCP Server clients. 17 - In the TIcsMailQueue component, don't keep retrying email that is too short to send with no body or with no sender headers. Added more error handling if the SMTP component fails to build the EML spool file. 18 - In OverbyteIcsUtils, finished the cleanup of old Base64 functions by adding new IcsBase64 functions using TBytes internally to replace old Base64 functions that used AnsiChars, with no overloaded versions for simplicity. Old Base64 versions retained as deprecated for user applications, please update to the IcsBase versions. Added IcsTBytesCompare to compare two TBytes. Added IcsOutputDebugStr for Posix and Windows. Added IcsDateToAStr and IcsDateTimeToAStr with alpha month (Jan/Feb). 19 - The ICS C++ packages for C++ 10.4 and later have been updated with the correct paths for the three supported platforms, and all build and install correctly for Win32. Win64 should also build, but not Win64x Modern which needs fixes in a future release of C++ 12. The release notes for V9.4 are at https://wiki.overbyte.eu/wiki/index.php/ICS_V9.4 All ICS active samples are available as prebuilt executables, to allow ease of testing without needing to install ICS and build them all. There are four separate zip files split into clients, servers, tools and miscellaneous samples which can be downloaded from https://wiki.overbyte.eu/wiki/index.php/ICS_Samples Angus 6 Share this post Link to post
Mark Lobanov 1 Posted February 14 Hello The same as in 9.3 (( Internal Error: URW1111 while compiling OverbyteIcsD2010Run.dproj or OverbyteIcsD2010Design.dproj in Delphi 2010. There are no errors in Delphi Tokyo. Share this post Link to post
Angus Robertson 608 Posted February 14 I tested D9.4 building OK in D2007, but I no longer have a license for D2010. Line 3825 is beyond the end of the unit. It could be the compiler does not like the if/ends You could try adding a new {$ENDIF} before initialization and {$IF MSWINDOWS} after. Angus Share this post Link to post
Angus Robertson 608 Posted February 14 The new ifdef should be one line lower. Angus Share this post Link to post
Mark Lobanov 1 Posted February 14 23 minutes ago, Angus Robertson said: The new ifdef should be one line lower. Sorry, I don't understand where exactly Share this post Link to post
Angus Robertson 608 Posted February 15 xx{ $ENDIF MSWINDOWS} initialization {$IFDEF MSWINDOWS} xx {$ENDIF MSWINDOWS} Angus Share this post Link to post
Mark Lobanov 1 Posted February 15 See attached end of file variants. The error did not go away (( OverbyteIcsWinsock-original.pas OverbyteIcsWinsock1.pas OverbyteIcsWinsock2.pas Share this post Link to post
Angus Robertson 608 Posted February 15 Sorry, unless I reproduce bugs, hard to fix. Angus Share this post Link to post
Angus Robertson 608 Posted Tuesday at 03:20 PM ICS V9.4 is now available from GetIt for Delphi 11 and 12. Angus 1 Share this post Link to post
Merkur 0 Posted Wednesday at 03:46 PM (edited) Hello, I have the identical error: [DCC Fatal Error] OverbyteIcsWinsock.pas(3830): F2084 Internal error: URW1111 during the installation of 9.4. To rule out the error is due to my old D2010 version on Windows 7, I set up a new Windows 11 on Hyper V and reinstalled Delphi 2010. Then I opened the project D2010Install.groupproj. When compiling OverbyteIcsD2010Run or installing OverbyteIcsD2010Design the above error occurs. Even after adapting OverbyteIcsWinsock.pas to OverbyteIcsWinsock2.pas the error remains. the error message always says that the error line is 2 lines after ‘end.’ or after the last line in the code when I add blank lines. ?? Jürgen Edited Wednesday at 03:56 PM by Merkur Share this post Link to post
Angus Robertson 608 Posted Wednesday at 03:56 PM Clearly some minor recent change in OverbyteIcsWinsock.pas has upset Delphi 2010, but seemingly not older or newer compilers. But our support of ancient compilers is limited, it is more important to support newer compilers. So please look back at the last ICS version you installed in D2010, see what has changed since, and fix it. Angus 1 Share this post Link to post
Merkur 0 Posted Wednesday at 04:48 PM I have installed ICS: 8.70, 9.1 and 9.2 successfully. 9.3 and 9.4 threw the error message above. Share this post Link to post
Angus Robertson 608 Posted Wednesday at 05:51 PM The large change with V9.3 was consolidating many type definitions into the Types unit, with their original versions commented out with (* *). I then remove old code a release or two later. Comparing the prior unit with the latest, I see there are a couple of embedded (* *) pairs I did not disable, near lines 1428 and 1467, maybe D2010 has trouble there. Try removing all that code. Or indeed any code that is commented out, which I'll do for the next release anyway. As I said earlier, I can not test this since my D2010 license no longer works. Angus Share this post Link to post
Nigel Thomas 36 Posted Thursday at 01:07 AM 7 hours ago, Angus Robertson said: As I said earlier, I can not test this since my D2010 license no longer works. Hi Angus, if you have an up-to-date licence for the latest does this not apply for you? https://www.embarcadero.com/products/delphi/previous-versions Or, have you run out of activations for your D2010 licence and Embaracero are being shits about bumping it? Share this post Link to post
Angus Robertson 608 Posted Thursday at 09:12 AM The issue here is how much time I can spend attempting to support long obsolete versions of Delphi, instead of concentrating on new features and stuff. My time is free and not unlimited. I have not yet removed support for these old Delphi versions from ICS, but those using them need to help investigate problems, not just report them. Angus 2 Share this post Link to post
FPiette 388 Posted Thursday at 10:26 AM On 2/14/2025 at 5:38 PM, Mark Lobanov said: Internal Error: URW1111 while compiling OverbyteIcsD2010Run.dproj in Delphi 2010. There are no errors in Delphi Tokyo. Since the internal error is in OverbyteIcsWinsock.pas, I suggest you build the simplest console project using the file and produce the internal error. The project doesn't have to do real things. Since URW1111 is an internal error, compiling is enough. Then remove (comment out) code chunks in OverbyteIcsWinsock.pas until the error disappears. Then reduce the size of the offending chunk until you find the line causing the error. This is for sure a long process... Report the offending line here. Share this post Link to post