-
Content Count
1881 -
Joined
-
Last visited
-
Days Won
33
Everything posted by Angus Robertson
-
Problem downloading GetIt package from GitHub
Angus Robertson replied to Jud's topic in Delphi IDE and APIs
I'm amazed this problem is not fixed yet. It happens if you install a new release from an ISO image or DVD which used to be a separate installer, but now uses GetIt in offline mode pointing to a massive file locally. This all works fine, except once it completes GetIt continues to look in that massive file for all the components you now need to re-install instead of looking online. The important line is 'GetItCmd.exe -c=useonline' which is used once. Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
Quite true, I use ICS in several Windows services. However all windows services need a message loop, that is how they are stopped and controlled. Obviously not the case with Linux. Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
ICS Windows console applications need a message pump anyway, and are relatively rare. I only have a single console application that sends emails when SVN is updated. An old version of ICS supported Kylix with a message pump which we could bring up to date, but if FMX supports this already, that is faster. Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
ThreadID: Cardinal; should really be ThreadID: TThreadID; to match all other use in the unit. Perhaps there is another mismatch somewhere that has caused truncation or something? Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
On a Windows form the entire application runs from ProcessMessages, if that is not the case with FMX then I guess it's a different design concept. Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
Pleased you got the package built, I've put updating the sample uses sections on my list. Sorry, never tried debugging a non-windows platform. I have been wondering why ICS is using a lot of MacOS specific libraries to emulate Windows messages, when the FMX forms unit seems to have ProcessMessages which one assumes works similarly to the Windows forms unit, it might be early versions of FMX 10 years ago were more limited. But I have other delayed projects to finish and can not investigate yet. Angus -
Not tried it yet, but Mida Convert sells tools to convert VCL to FMX, including various third party components: http://midaconverter.com/ Angus
-
This error is building the package under windows, it can not find RTL, Angus
-
After updating to 10.4.1, installing FMXLinux, updating PAServer to the latest, and recreating my Linux Profile, I can now build and run the FMXLinux sample, so it does all work on UBUNTU 20.04. However, when building the new ICS Linux package (which is in SVN) I now get: E2597 ld-linux.exe: error: cannot find bplrtl270.so despite adding binlinux64 to the system path. Also 79 FMX units mplicitly imported into the package. Still ned to fix the message pump, but getting closer. Angus
-
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
SVN and the overnight zip have many updated units with Posix support, most of the changes are in new units I've added or things I'd changed over the years. Some Posix is TODO, particularly ICMP/ping, ShellExec and some Windows specific file operations in OverbyteIcsFileCopy. But these changes allow the ICS FMX packages to build for the Linux 64-bit platform, and hopefully the MacOS64 platform. There is a new package IcsLinuxD104 that I'm able to build without errors, just a few hints and TODOs although final compile fails probably because I'm using an unsupported Ubuntu version. This all needs FMXLinux installed first and you will get 79 FMX units implicitly imported into the package, because FMXLinux does not have a package, or I can not find it. The main work needed is the message pump and timer support, the current implementation is MacOS specific using Apple libraries. I believe FMXLinux probably includes replacements, but it is undocumented and little source code, and without being able to build Linux applications not going to try. We have an ancient ICS version built for Kylix with a message handler that could be used, but my knowledge of Linux is zero so someone else will need to make a decision and finish the Linux implementation. Hopefully not too much effort. Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
Seems 'Required package 'fmx' not found' really means that Delphi for Linux does not support FMX, no GUI applications. Or at least until you install FMXLinux using Getit. Angus -
I wrote the Mail Queue component 10 years ago and it was available from the Magenta Systems site, only integrated with ICS early last year. For persistence, all emails are written as disk files and into database (simple text file). You specify how many attempts to send each email with what gap, which are repeated for each server (if more than one) or it will look-up MX records and send directly, but that really only works if the server has proper reverse DNS for major email providers. Once sent, the file is deleted or moved to an archive directory. The sample app has a window to view the queue in a grid to see what is left in the queue and delete stuff. and I include that window in my applications. So really all the concepts of a forwarding SMTP mail server, but it would need a better database design for heavier traffic, it really intended to send hundreds of emails at a time, not thousands. Angus
-
Change to using the TIcsMailQueue component, you prepare email using THtmlSmptCli after which you forget about it while a thread tries to send the mail using several mail servers over several days, all queued. Designed specifically for servers to call for help, Used in the OverbyteIcsSslMultiWebServ.dpr sample. Angus
-
SMS Sending in Delphi in a generic way
Angus Robertson replied to Ramu's topic in Delphi IDE and APIs
Yes, although I only send one message at a time, I'd hope the bureau has systems in place to stop bulk SMS from bad names. The other bureau ICS supports offers the same for a price, but fixed for the account. These places are how people fake SMS, but most commercial SMS comes with a name, not a number. Angus -
SMS Sending in Delphi in a generic way
Angus Robertson replied to Ramu's topic in Delphi IDE and APIs
The Overbyte ICS library includes an TIcsSms component that uses REST to send SMS via two different British bureau with a pre-paid account , there is a demo project. Adding further bureaus is not hard, although they have their own ideas about authentication, one uses name/pw, the other a JSON block. ICS supports SMS Works at https://thesmsworks.co.uk/ which allows you to set the originating SMS address to anything you like, name or number which is cool. In the past I've used the Async Pro SMS component with an SMS modem connected by RS232 cable, had to modify the code to make it work properly, but there are more things to configure, does not work from VMs, or data centres, etc. Angus -
OverbyteIcsPemTool: Import a Windows Ceritificate Store to…
Angus Robertson replied to milan's topic in ICS - Internet Component Suite
The code exporting X509 certificates from the Windows store was designed to build Certificate Authority root bundles with which to verify SSL/TLS certificates in ICS applications, not to export server certificates with private keys, generally you already have those as PEM or PFX files from your certificate supplier. But Windows no longer has a complete CA store and downloads new roots on demand, so ICS stopped using exported certificates a while ago and builds it's CA bundles differently. If you don't have original PEM files, you can export certificates manually from the Windows store to create them, if they were originally installed with export allowed. Angus -
TSslHttpRest.RestParams.GetParameters - JSON value "true" vs true
Angus Robertson replied to milan's topic in ICS - Internet Component Suite
If you use RawParams you also need to set ContentPost to say what you are posting. BTW, all the REST APIs I've used so far have accepted a Json value of 'True', but I will look at improving TRestParams, not immediately though. Angus -
TSslHttpRest.RestParams.GetParameters - JSON value "true" vs true
Angus Robertson replied to milan's topic in ICS - Internet Component Suite
The RestRequest method includes RawParams string which is where pverides any TRestParams. Angus -
TSslHttpRest with multipart/form-data
Angus Robertson replied to tulio's topic in ICS - Internet Component Suite
While ICS has MIME decoding units, the only multipart/form-data encoding is in the OverbyteIcsHttpPost1 sample you've found. I think you need to set DebugLevel to DebugBody and makes sure your POST content is logged to see what the component is actually sending to the server. Angus- 1 reply
-
- tsslhttprest
- rest
-
(and 2 more)
Tagged with:
-
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
SVN is up to date with my changes yesterday, but won't be doing any more until middle of next week. I did try changing the platform to Win32 but still got the Options error, not having MacOS PAServer might be a problem. Angus -
TSslHttpRest.RestParams.GetParameters - JSON value "true" vs true
Angus Robertson replied to milan's topic in ICS - Internet Component Suite
Sorry, currently TRestParams does not create boolean or numeric parameters, you'll need to construct the Json manually or with SuperObject. Angus -
Invalid Compiler Directive: 'MESSAGES'
Angus Robertson replied to Incus J's topic in ICS - Internet Component Suite
If you have seen the more recent topic on Linux here, I've managed to get a Linux VM running so can now build packages for Linux 64 bit. which is closer to MacOS than Windows. Making some changes today, I've managed to build the IcsCommonD104Run package for Linux, including OverbyteIcsTicks64. But am now stuck building IcsFmxD104 for Linux, with 'Required package 'fmx' not found'. Attempting to check paths in Project Options quickly gets 'invalid value for CFBundleVersion' which seems to relate to Apple platforms which I'm not building, nor can I set MacOS version information. I was wondering about those missing Ics.Fmx prefixes, but all this MacOS stuff was written by another developer who is no longer with us, so can not ask. I assume it all worked many years when he tested it, but we are now many Delphi versions later and it seems we do need to change all those uses names. Angus -
If you look at any ICS components or samples that receive data, you see that you need to loop within the event to receive data with that function, you may get six bytes first time, 29K next time, loop until nothing more is returned. If you receive a string, it may be a partial line, so you need to buffer it until the a full line is available. ICS also has line mode that makes sure you receive full lines, but you may lose data if the last line does include CRLF. Also, you can not read UTF8 data reliably like this, because you may get a partial character with the first read. You need to wait until you have a line, then convert from ANSI to Unicode. If you used the OverbyteIcsIpStmLogTst.dpr sample I suggested, none of this would be an issue, it's all done for you. Angus
-
Sure it's fine once you get a terminal window to install new components, but my problem was not getting past the login screen with an xorg session that needs RDP, and other methods like console and xvnc not working because they were not installed by default. Angus
-
If the latest RTL implements GetTickCount on all supported platforms, and hopefully new ones, why would an alternative be better? Not sure which Delphi version implemented it, but MacOS-32 seems to be out of support now so ICS really only needs to support Posix/Mac for 10.3.2 and later. Angus