The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,854 other subscribers

Archive for the ‘Delphi’ Category

MMX Needs New Icons – Are You Willing To Help? – MMX

Posted by jpluimers on 2019/06/30

[WayBack] MMX Needs New Icons – Are You Willing To Help? – MMX:

I am pretty sure all of you already noticed: The current icons in MMX not only look a bit old, they also don’t look well on the Dark Theme. They are not alpha blended and are only available in 16 x 16 pixel size. This may become a problem when the IDE will support High DPI in the future.

Unfortunately the stock icons available in the market simply don’t fit the purpose of most of the individual icons needed, so custom designed icons seem to be mandatory.

I have been asked several times where people can donate to support the development of MMX. While I am still not planning to accept donations for the time I am going to invest in the development, donating for the icons is a good way to show your gratitude. If you are not a able or willing to donate – that’s OK. Anyway, please consider to spread the word about this.

Many thanks to all that already donated and those who are going to do so.

For those still looking for the link to the MoneyPool, here it is: https://www.paypal.com/pools/c/8e4alQxGzA

–jeroen

Posted in Delphi, Development, ModelMaker Code Explorer, Software Development | Leave a Comment »

The Delphi compiler has a hard time coping with circular unit references

Posted by jpluimers on 2019/06/27

In [WayBack] Anyone here with an “F2092 Program or unit ‘?’ recursively uses itself” error in Tokyo? I have this error in Tokyo but the same project compiles ok in Berlin… – Luis Madaleno – Google+, I commented this:

Large circular reference cycles can trip the compiler into emitting this error (next to out-of-memory errors, access violations and internal errors and “unitX.pas F2063 Could not compile used unit ‘unitY.pas'”).

Solution that usually works: quit Delphi, delete .DCU files, start Delphi, build all, then compile. Cumbersome, time consuming, but since the error is intermittent and involves large code bases, it’s was hard to get it to R&D back in the days.

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

WouterVanNifterick/C-To-Delphi: C To Delphi converter

Posted by jpluimers on 2019/06/25

For my link archive: [WayBack] WouterVanNifterick/C-To-Delphi: C To Delphi converter

Via: [WayBack] Does anyone know of a C/C++ to Delphi converter? – Michael Riley – Google+

–jeroen

Posted in C, Delphi, Development, Software Development | 2 Comments »

missing TPopupMenu feature: checking for visibility

Posted by jpluimers on 2019/06/25

a method to detect when the menu was closed without a selection (i.e. none of the menuitem OnClick handlers fired). Add the unit below to your project and the form the popup menu is on will receive the custom messages defined in the unit when the menu appears or closes.

The solution by Peter Below in ExPopupList works from D5 on:  [Archive.ismissing TPopupMenu features? – Google Groups.

Now you can hook the [WayBackTControl.OnContextPopup Event for a [WayBackTPopupMenu activation, and the custom Windows messages CM_MENUCLOSED, CM_ENTERMENULOOP and CM_EXITMENULOOP to monitor the state of the popup menu.

Via:

–jeroen

Read the rest of this entry »

Posted in Delphi, Development, Software Development | Leave a Comment »

To use the – undocumented – GetItCmd.exe CLI version of the GetIt package manager, run rsvars.bat first – via G+

Posted by jpluimers on 2019/06/20

Interesting observation on [WayBack] How do you use the CLI version of GetIt Package Manager. I always get a “no items were found.” response. As usual, the EMBT wiki is total rubbish and do… – Graeme Geldenhuys – Google+.

What you need for GetItCmd, is to run rsvars.bat for your Delphi version first, which is exactly what [WayBackRun-Dependend-rsvars-From-Path.bat – which I wrote a while ago – does.

I did not even know that there was a CLI equivalent of [WayBack] GetIt – RAD Studio , but it is there, totally undocumented: GetItCmd apart from two filename references on the French and German docwiki:

Apart from that, I could only find these links:

Another odd thing: rsvars.bat is also not documented, and has just one reference in the docwiki: [WayBack] Using CMake with C++ Builder – RAD Studio.

The use of rsvars.bat is simple: it sets the below environment variables (some older versions set less variables, like missing PLATFORM or PlatformSDK) for use with the IDE (bds32.exe), msbuild and GetIt.

BDS
BDSINCLUDE
BDSCOMMONDIR
FrameworkDir
FrameworkVersion
FrameworkSDKDir
PATH
LANGDIR
PLATFORM
PlatformSDK

(some of these are set to empty to they at least exist)

Later on, Marco Cantu reacted

The command line version of GetIt is not stable, so it was never “promoted” to being a feature. It was a tentative feature, we likely removed the English doc, but translations remained — so having that documentation is kind of an error. We ship is as we use it, with a specific command that works and is safe. In other words, use it as your own risk, as it is not an official feature.

So apparently, the only way that GetIt works, is through a specific command in GetItCmd. From an architectural point of view that gives me a  “lets get this tick on the feature matrix done no matter what the architectural consequences are” feeling.

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

Splitting user settings from your Delphi projects:  DprojSplitter by Uwe Raabe

Posted by jpluimers on 2019/06/20

Reminder to self to try this out: [WayBackWorking in a team? DprojSplitter might be helpful! | The Art of Delphi Programming.

The most recent version (covering a wider range of Delphi versions) was at [WayBackDprojSplitter for Delphi XE2 to XE6 available | The Art of Delphi Programming.

DprojSplitter handles the current build configuration and current plattform. In addition these settings are handled, too (found in CommonOptionStrs):

sDebugger_RunParams,
sDebugger_RemoteRunParams,
sDebugger_HostApplication,
sDebugger_RemotePath,
sDebugger_RemoteHost,
sDebugger_EnvVars,
sDebugger_SymTabs,
sDebugger_Launcher,
sDebugger_RemoteLauncher,
sDebugger_IncludeSystemVars,
sDebugger_UseLauncher,
sDebugger_UseRemoteLauncher,
sDebugger_CWD,
sDebugger_RemoteCWD,
sDebugger_RemoteDebug,
sDebugger_DebugSourcePath,
sDebugger_LoadAllSymbols,
sDebugger_LoadUnspecifiedSymbols,
sDebugger_SymbolSourcePath

Heck, you can even configure the ones to split: [WayBackConfiguring DprojSplitter to Your Needs | The Art of Delphi Programming

–jeroen

via:

Posted in Delphi, Development, Software Development | Leave a Comment »

Switching Delphi XML DOM vendors

Posted by jpluimers on 2019/06/18

I thought I had written a blog article on switching DOM vendors before, but in retrospect that was a conference presentation somewhere in 2011: https://github.com/jpluimers/Conferences/tree/master/2011/EKON15-Renaissance-Hotel-D%C3%BCsseldorf/Delphi-XE2-and-XML

I mentioned some of the materials at [WayBack] delphi – Reading distinct values from XML using XPath – Stack Overflow.

It was back in the days I worked for better office, Gwan Tan was still alive and CodePlex was still a thing. Now the code is at [WayBack] bo library – CodePlex Archive: An archive of the CodePlex open source hosting site.

Some recovered bits are at https://gist.github.com/jpluimers/98dcec944538fd6986fd2d51f7a79d8b#file-mainformunit-pas that shows the selection process of a TDOMVendor, how to log its capabilities and how to use it all in the method procedure TMainForm.LogDomVendor(const CurrentDomVendor: TDOMVendor);

Hopefully one day I can resurrect the code one day…

Over the years, the vendor list has not changed much [WayBack] Using the Document Object Model – RAD Studio documents these vendors.

Compared to Delphi 2007 and earlier, OmniXML has gone and ADOM has entered.

On the MSXML side, you can change which version you use too, as explained in Quick tip: using MSXML v6 with TXMLDocument in D7-D2007 – DelphiFeeds.com with the original article at [WayBackQuick tip: using MSXML v6 with TXMLDocument in D7-D2007 | Delphi Haven.

Basically he overwrites MSXMLDOMDocumentCreate with a method creating the right MSXML DOM document. That has now been deprecated as [WayBack] Xml.Win.msxmldom.MSXMLDOMDocumentCreate – RAD Studio API Documentation now points to [WayBack] Xml.Win.msxmldom.TMSXMLDOMDocumentFactory.CreateDOMDocument – RAD Studio API Documentation.

List of Built-in XML Vendors

The following table shows a comparison of the XML vendors that RAD Studio supports by default:

Implementation Unit Global Variable Description
MSXML Xml.Win.msxmldom SMSXML Fastest of the built-in RAD Studio XML vendors. Windows only. Default.

For cross-platform support, you must choose a different XML vendor. If you do not specify a different XML vendor, your application does not have XML support on other platforms than Windows, and you see a run-time exception when you run your application in other platforms.

OmniXML Xml.omnixmldom sOmniXmlVendor Much faster than ADOM, but slightly slower than MSXML. Cross-platform.
ADOM Xml.adomxmldom sAdom4XmlVendor Slower than the other built-in RAD Studio XML vendors. Cross-platform.

–jeroen

Read the rest of this entry »

Posted in Delphi, Development, Software Development | Leave a Comment »

Desktop Duplication API in Delphi – CodeProject

Posted by jpluimers on 2019/06/18

Cool stuff: [WayBackDesktop Duplication API in Delphi – CodeProject.

It is based on:

There is also a GitHub repository: Delphi/DesktopDuplicationAPI at master · tothpaul/Delphi

Via: [WayBack] Little demo for the Desktop Duplication API  – Paul TOTH – Google+

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

DelphiTips/RecordProperty at master · tothpaul/DelphiTips · GitHub

Posted by jpluimers on 2019/06/13

Out of the box, Delphi does not support record properties because of two lacking features:

Paul Toth worked around both at [WayBack] DelphiTips/RecordProperty at master · tothpaul/DelphiTips · GitHub

He uses an intermediate helper where he redirects the get/set methods to from a property registration call.

Note that in the past, Pieter Zijlstra did a similar thing, but bumped into a Delphi 2010 problem where the status indicates it is till open: [WayBack] QualityCentral: 77635 – Open – The new RTTI of D2010 causes components with published record properties to fail to stream in.

Source: Yes ! I’ve published a Record property it could be nice to have this feature…

Via: [WayBack] Yes ! I’ve published a Record property it could be nice to have this feature in Delphi, but we need RTTI for record properties to simplify the code (an… – Paul TOTH – Google+

–jeroen

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Compression Decompressed | The website of Jack Preston, Computerer

Posted by jpluimers on 2019/06/13

The basics of data compression and how Youtube, Netflix and Spotify stream your stuff.

Step by step, you take a visual tour through the image compression process.

Source: [WayBackCompression Decompressed | The website of Jack Preston, Computerer

Image source: [Archive.isTwitter GIFs – Find & Share on GIPHY

Via:

[WayBack] Compression Decompressed or, Making Things Smaller. – ThisIsWhyICode – Google+

–jeroen

 

Posted in Delphi, Development, Software Development | Leave a Comment »