Adam’s January 2018 Meeting Feedback

Meeting Agenda

  • Talk: Creative debugging techniques – Brian Long
  • Nugget: Free SSL Certificates – Mark Jacobs
  • Talk: Setting up Microsoft Azure Web Services (aka hosted IIS) and Website Volume/Stress Testing – Patrick Hort
  • Nugget: Changing the behaviour of comboboxes globally, using the Application OnMessage event – Mark Jacobs
  • Nugget: Writing text in FMX – Martin Hamilton

Adam’s Feedback

Brian led the meeting. The news session was dominated by discussions of future events.

Brian then presented on debugging techniques. Starting with mentioning SmartInspect, Codesite (now included in Delphi/RAD Studio), Overseer and LoggerPro.
He went on to demonstrate use of OutputDebugString, and how to detect calls to this function in Running Applications, outside the IDE using DebugView from SysInternals. He went on to show how lines of source code can be excluded from an application running in Debug mode in the IDE, by rewriting the compiled bit-code.

Mark then presented on FreeSSL. How to set up your own website as HTTPS compliant using free tools. He used Certificate Tools to generate a Private Key and Certificate Signing Request (CSR), then ZeroSSL to convert the CSR into files which are stored on the server. These free systems require re-setting both the Private Key and CSR every 90 days.

Patrick then presented on setting up an ISAPI Delphi Application on Microsoft Azure.
Offers a vast panoply of products and services, none of them particularly cheap (apart from the free ones!). However you get what you pay for, which includes the ability to “scale up” and “scale out” servers live, in response to demand, which is very useful where public access to your services has very big spikes.
Patrick showed the basics of setting up an Azure account, creating a “Web App” and showed that a “Web App” is basically a cloud-based Windows VM, with a few things missing.
The Web App is set up to roughly mimic the way ISAPI / ISS applications are set up on a server, with folder structures like “\\wwwroot” which map to ones we should be used to if we have done ISAPI development in the past.
Patrick uses Filezilla to FTP files between his main machine and his Web-App. Azure makes it relatively easy to link a Web-App instance to a public URL, making deployment fairly easy.
Gotchas include the fact that once an ISAPI DLL is running you cannot easily update it, as this requires copying your new file over the old one, which is impossible while the website is active.
Also, Azure Web Apps explicitly do not include a number of key windows features, such as the ability to render images, PDFs etc. Patrick has not found any ways to get around this, but is instead looking to replace this type of functionality by generating HTML and JavaScript in his application.

Mark then presented a nugget on how to capture User Behaviour globally in a C++ Application.
Mark made use of both TApplication.OnMessage and TForm.WndProc to identify whether the sending component was a ComboBox.
If it was he triggered custom-behaviour, including saving the state of the combo-box so he could update it from a UI-dialog.
This allowed one UI-dialog to give and take input/output from EVERY combobox in the entire application, without the need to add any code to the comboboxes themselves.

Martin then presented on FireMonkey TTextLayout
Martin first showed that Firemonkey’s “Canvas” object is actually very fully featured, and can allow custom-drawing of text, but that Firemonkey also includes a TTextLayout object which is even more fully featured.

Further information and links for all the talks are available in the Members Group