The Wiert Corner – irregular stream of stuff

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

  • Home
  • Wiert.me
  • About the Wiert Corner
  • Privacy Policy
  • Conferences, seminars and other public appearances
  • Posting categories
  • Archives
  • Toolbox
  • Contact form
  • License
  • Subscribe

    • Entries (RSS)
    • Comments (RSS)
  • December 2025
    M T W T F S S
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
    « Nov    
  • Archives

    • December 2025 (31)
    • November 2025 (47)
    • October 2025 (50)
    • September 2025 (49)
    • August 2025 (47)
    • July 2025 (50)
    • June 2025 (47)
    • May 2025 (48)
    • April 2025 (46)
    • March 2025 (44)
    • February 2025 (48)
    • January 2025 (55)
    • December 2024 (48)
    • November 2024 (44)
    • October 2024 (51)
    • September 2024 (46)
    • August 2024 (53)
    • July 2024 (50)
    • June 2024 (36)
    • May 2024 (33)
    • April 2024 (33)
    • March 2024 (36)
    • February 2024 (28)
    • January 2024 (28)
    • December 2023 (27)
    • November 2023 (24)
    • October 2023 (24)
    • September 2023 (29)
    • August 2023 (31)
    • July 2023 (33)
    • June 2023 (26)
    • May 2023 (26)
    • April 2023 (31)
    • March 2023 (26)
    • February 2023 (27)
    • January 2023 (24)
    • December 2022 (33)
    • November 2022 (27)
    • October 2022 (23)
    • September 2022 (25)
    • August 2022 (24)
    • July 2022 (26)
    • June 2022 (26)
    • May 2022 (23)
    • April 2022 (32)
    • March 2022 (69)
    • February 2022 (63)
    • January 2022 (66)
    • December 2021 (75)
    • November 2021 (66)
    • October 2021 (64)
    • September 2021 (67)
    • August 2021 (69)
    • July 2021 (69)
    • June 2021 (69)
    • May 2021 (68)
    • April 2021 (67)
    • March 2021 (72)
    • February 2021 (63)
    • January 2021 (65)
    • December 2020 (70)
    • November 2020 (64)
    • October 2020 (68)
    • September 2020 (67)
    • August 2020 (67)
    • July 2020 (71)
    • June 2020 (68)
    • May 2020 (64)
    • April 2020 (67)
    • March 2020 (70)
    • February 2020 (61)
    • January 2020 (74)
    • December 2019 (70)
    • November 2019 (63)
    • October 2019 (73)
    • September 2019 (68)
    • August 2019 (66)
    • July 2019 (68)
    • June 2019 (68)
    • May 2019 (72)
    • April 2019 (73)
    • March 2019 (64)
    • February 2019 (68)
    • January 2019 (78)
    • December 2018 (87)
    • November 2018 (77)
    • October 2018 (79)
    • September 2018 (77)
    • August 2018 (76)
    • July 2018 (74)
    • June 2018 (63)
    • May 2018 (70)
    • April 2018 (63)
    • March 2018 (72)
    • February 2018 (48)
    • January 2018 (83)
    • December 2017 (67)
    • November 2017 (62)
    • October 2017 (63)
    • September 2017 (52)
    • August 2017 (62)
    • July 2017 (48)
    • June 2017 (57)
    • May 2017 (68)
    • April 2017 (55)
    • March 2017 (59)
    • February 2017 (58)
    • January 2017 (60)
    • December 2016 (59)
    • November 2016 (74)
    • October 2016 (61)
    • September 2016 (87)
    • August 2016 (57)
    • July 2016 (51)
    • June 2016 (49)
    • May 2016 (48)
    • April 2016 (51)
    • March 2016 (49)
    • February 2016 (50)
    • January 2016 (48)
    • December 2015 (59)
    • November 2015 (57)
    • October 2015 (37)
    • September 2015 (31)
    • August 2015 (41)
    • July 2015 (31)
    • June 2015 (37)
    • May 2015 (30)
    • April 2015 (32)
    • March 2015 (37)
    • February 2015 (52)
    • January 2015 (50)
    • December 2014 (43)
    • November 2014 (39)
    • October 2014 (40)
    • September 2014 (41)
    • August 2014 (58)
    • July 2014 (32)
    • June 2014 (23)
    • May 2014 (38)
    • April 2014 (105)
    • March 2014 (145)
    • February 2014 (81)
    • January 2014 (56)
    • December 2013 (58)
    • November 2013 (32)
    • October 2013 (26)
    • September 2013 (26)
    • August 2013 (54)
    • July 2013 (47)
    • June 2013 (41)
    • May 2013 (33)
    • April 2013 (41)
    • March 2013 (50)
    • February 2013 (47)
    • January 2013 (55)
    • December 2012 (32)
    • November 2012 (23)
    • October 2012 (37)
    • September 2012 (52)
    • August 2012 (46)
    • July 2012 (40)
    • June 2012 (30)
    • May 2012 (27)
    • April 2012 (30)
    • March 2012 (29)
    • February 2012 (32)
    • January 2012 (25)
    • December 2011 (38)
    • November 2011 (28)
    • October 2011 (46)
    • September 2011 (63)
    • August 2011 (35)
    • July 2011 (24)
    • June 2011 (24)
    • May 2011 (24)
    • April 2011 (29)
    • March 2011 (50)
    • February 2011 (48)
    • January 2011 (18)
    • December 2010 (5)
    • November 2010 (18)
    • October 2010 (22)
    • September 2010 (29)
    • August 2010 (24)
    • July 2010 (27)
    • June 2010 (29)
    • May 2010 (25)
    • April 2010 (23)
    • March 2010 (10)
    • February 2010 (6)
    • January 2010 (16)
    • December 2009 (12)
    • November 2009 (3)
    • October 2009 (11)
    • September 2009 (21)
    • August 2009 (11)
    • July 2009 (11)
    • June 2009 (5)
    • May 2009 (12)
    • April 2009 (20)
  • *nix *nix-tools .NET About Apple C# Conferences Conference Topics Delphi Development Event Google Hardware History Internet LifeHacker Linux Mac Mac OS X / OS X / MacOS Personal Power User Scripting Security SocialMedia Software Development Source Code Management VMware Web Development Windows Windows 7
  • Recent Comments

    Lars Fosdal's avatarLars Fosdal on Security alarm provider Woonve…
    Thomas Mueller's avatarThomas Mueller on Question got closed in May 202…
    Thaddy de Koning's avatarThaddy de Koning on Formulier voor bewindvoerders…
    Thaddy de Koning's avatarThaddy de Koning on Formulier voor bewindvoerders…
    Thaddy de Koning's avatarThaddy de Koning on Formulier voor bewindvoerders…
  • Recent Posts

    • If you develop web-sites, be sure their basics work without JavaScript, as JavaScript is a security risk
    • Maarten van Smeden “This is why programming is an acquired skill” / Twitter
    • Big Clive: Lighting tech tool bag tour 2025 – YouTube
    • Visual Studio Code has had a PlantUML extension for a while now
    • More invoices: WordPress, Google,
  • Blog Stats

    • 3,605,032 hits
  • Meta title

    • Create account
    • Log in
    • Entries feed
    • Comments feed
    • WordPress.com
  • Tag Cloud Title

    .NET Framework 1 2 3 4 6 7 8 16 18 25 32 android Apple arts aviation batch file bitbucket blogging command-line computer Conferences Delphi delphi 1 delphi 5 design developer documentation education embarcadero flickr gadgets geeks gmail google google search include infosec internet iOS iphone jeroen mac os x Media microsoft surface mobile nick hodges pascal path names pdf photography Privacy Python RaspberryPi research science scott hanselman shorts software sourcecode language sourceforge ssd stack overflow technology TLS transportation Travel twitter vcl vm VMware VMware Fusion VMware Workstation wordpress xkcd
  • Top Clicks

    • somoit.net/windows/window…
    • customerconnect.vmware.co…
    • stackoverflow.com/questio…
    • archive.is/kSjKR
    • en.wikipedia.org/wiki/IEC…
    • web.archive.org/web/*/htt…
    • google.com/search?q=+4477…
    • download.microsoft.com/do…
    • plus.google.com/u/0/+Andr…
    • pinterest.com/pin/create/…
  • Top Posts

    • When NTFS shrink fails, despite using the default settings from the shrink dialog
    • Calls from +18553308653 might be because someone is trying to use your phone number to setup a Microsoft account two factor authentication
    • Historic storage prices: graphs and tables
    • C13/C14 wiring diagram live/neutral/earth
    • NeverSSL - helping you get online on WiFi networks requiring authentication
    • DELL fans use a different pin-layout than normal fans, so watch out before connecting them!
    • html - What can cause Chrome to give an net::ERR_FAILED on cached content against a server on localhost? - Stack Overflow
    • During git mv (rename): "unable to unlink old" "invalid argument"
    • How to fill proxy information in cntlm config file (via: Stack Overflow)
    • Delphi, SHA-3 and streaming
  • My badges

    Mastodon
  • Twitter Updates

    Tweets by jpluimers
  • My Flickr Stream

    20140508-Delphi-2007--Project-Options--Cannot-Edit-Application-Title-HelpFile-Icon-Theming20140430-Fiddler-Filter-Actions-Button-Run-Filterset-now20140424-VMware-Fusion-6.0.3.-no-reclaimable
    More Photos
  • Pages

    • About the Wiert Corner
      • bio
      • Music I like
    • Archives
    • Conferences, seminars and other public appearances
    • Contact form
    • License
    • Posting categories
    • Privacy Policy
    • Toolbox
      • DNS
      • Links
      • spring4d
      • Status
    • Wiert.me
  • All categories

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

    Join 1,860 other subscribers

Archive for the ‘Delphi 6’ Category

« Previous Entries

delphi – Is it possible to define {$IFDEF} for more than one directive at once? – Stack Overflow

Posted by jpluimers on 2021/06/24

[WayBack] delphi – Is it possible to define {$IFDEF} for more than one directive at once? – Stack Overflow:

  • use the {$IF Defined(xxx)} directive which allows boolean expressions like:
    • {$IF Defined(xxx) OR Defined(yyy)}
    • {$IF Defined(xxx) AND Defined(yyy)}
    • {$IF NOT Defined(zzz)}
  • it has been in Delphi since Delphi 6 (see [WayBack] conditional statements – Why {$IFDEF MSWINDOWS} is replaced with {$IF defined(MSWINDOWS)} in Delphi XE5? – Stack Overflow and many other references).
  • [WayBack] IF directive (Delphi)
    Type
    Conditional compilation
    Syntax
    {$IF expression}

    Compiles the Delphi source code that follows it if expression is true. expression must conform to Delphi syntax and return a Boolean value; it may contain declared constants, constant expressions, and the functions Defined and Declared.

–jeroen

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

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

“Don’t access VCL from a background thread” – how to demo that?

Posted by jpluimers on 2018/07/11

When accessing the VCL from multiple threads at the same time: adopted from ...\DEMOS\THREADS\THRDDEMO.DPR

When accessing the VCL from multiple threads at the same time: adopted from …\DEMOS\THREADS\THRDDEMO.DPR

Great question a while ago:

[WayBack] “Don’t access VCL from a background thread” – how to demo that? – Primož Gabrijelčič – Google+

For me, the ultimate way why not to access the VCL from a background thread is the precursor of the official threads demo that ships from Delphi 2 to Delphi XE6 in ...DEMOS\THREADS\THRDDEMO.DPR. where you’d think the thread isolation would be in ...DEMOS\THREADS\ThSort.pas but actually is in ...DEMOS\THREADS\SortThds.pas.

The first public showing of that demo did not include main thread protection. It originates from a session at the the 1995 Borland Developers Conference where Ray Konopka showed the below code from Bob Ainsbury.

That session reminded why this joke [WayBack] Via the EKON20 sessions… – Jeroen Wiert Pluimers – Google+ was so funny:  “When Ray Konopka enters the room you have a Raize condition.“.

The question above also made me find back this reference to BorCon95 in San Diego:

Read the rest of this entry »

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 10.2 Tokyo (Godzilla), Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 2 Comments »

Wizard to change Delphi Icon so it used the Projects’ Icon

Posted by jpluimers on 2018/04/05

Thomas Mueller (dummzeuch) – Google+ wrote this: [WayBack] Just an inspiration from attila kovacs (too many guys with this name on G+ to…:

A Delphi Wizard that adds a menu item so the Delphi Icon will change into the icon of the currently loaded project.

Can be useful if you have many Delphi instances open.

Source at [WayBack] http://pisil.de/bds_icon.txt

via: [WayBack] Is anybody able and have time to create an extension … change the icon with Application.Icon… – Attila Kovacs – Google+

–jeroen

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | Leave a Comment »

Delphi: playing Chimes.wav as an external file or embedded WAVE resource in Delphi XE5.

Posted by jpluimers on 2018/01/10

As a by-effect, this article seems to one of the few that shows where Delphi uses the .dres file extension introduced around Delphi XE.

Recently I had to play some notification sounds in a Windows Delphi application where the application deployment should be as easy as possible: preferable copying the EXE around.

Playing a sound file seems easy, especially if it is a [WayBack] WAV file: just use the [WayBack] PlaySound or the (older) [WayBack] sndPlaySound API functions.

But if you start searching on the internet, you see lots of curious implementations for playing WAV resources through sndPlaySound.

The actual implementation is really really easy though, just make sure you follow the steps right and nothing can go wrong.

[WayBack] The full source code is on my BeSharp.net repository, here is how to to it step by step:

The steps depend on the MMSystem unit, so most of the code translates back to [WayBack] Turbo Pascal for Windows (yes, the 16-bit Pascal days when the MMSystem unit was introduced) with the exception of the SND_SENTRY flag.

The thing that more recent Delphi versions made a lot easier is embedding WAV files as WAVE resources, more on that further on. Read the rest of this entry »

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Borland Pascal, Delphi, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Pascal, Software Development, Turbo Pascal | Leave a Comment »

MarcoDelphiBooks on GitHub

Posted by jpluimers on 2017/07/04

Just in case I need any of them: now in chronological order.

MarcoDelphiBooks – http://www.marcocantu.com

  • ObjectPascalHandbook
  • MasteringDelphi3
  • MasteringDelphi4
  • MasteringDelphi5
  • MasteringDelphi6 
  • MasteringDelphi7
  • MasteringDelphi2005
  • Delphi2007Handbook
  • Delphi2009Handbook
  • Delphi2010Handbook
  • DelphiXEHandbook

Source: MarcoDelphiBooks

–jeroen

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 2005, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Development, Software Development | Leave a Comment »

Ken Thompson – quotes – Reflections on Trust

Posted by jpluimers on 2016/12/21

Some of the [Wayback] Ken Thompson – Wikiquote entries come from a great [Wayback] 1983 ACM Turing Award Acceptance Lecture [Wayback] “Reflections on Trusting Trust”.

That lecture used to be on http://cm.bell-labs.com/who/ken/trust.html

But it isn’t, and was not in the WayBack machine and neither in the Google Cache [Archive.is] because of the [Wayback/Archive.is] robots.txt. Historic link rot galore!

Edit 20210728: by now it is in the Wayback machine again; the earliest archived copy is from 2001, it also shows that as of april 2015 it is gone from the bell labs server.

The lecture is about [Wayback] compiler viruses and viruses actually did this at least a few times: Wayback: Delphi in 2009 and to [Wayback] XCode in 2015.

A few nice links from [Wayback] ACM Classic: Reflections on Trusting Trust – Google Groups though:

  • [Wayback] Countering “Trusting Trust” – Schneier on Security.
  • [Wayback] Fully Countering Trusting Trust through Diverse Double-Compiling (DDC) – Countering Trojan Horse attacks on Compilers.
  • [Wayback] The Ken Thompson Hack.

And archived versions of (I hope accurate) copies of the article:

  • [Wayback] Cryptography, Security, and Privacy (CrySP) | SCS | UW at the University of Waterloo has it online and archived.
  • [Wayback] ouah.org has it online and archived too.

Finally I found a PDF copy of the original ACM prints that Greg Ganger of Electrical and Computer Engineering at Carnegie Mellon University has online. It’s archived too.

–jeroen

Further reading:

  • (Gone with G+) Really neat concept by Ken Thompson that I read about many years ago. Embed a virus into a compiler that infects any compilers that it compiles, thus… – Koushik Dutta (Koush) – Google+
  • [Wayback] Strange Loops: Ken Thompson and the Self-referencing C Compiler – Good Math, Bad Math.
  • [Wayback] linux – Is Ken Thompson’s compiler hack still a threat? – Programmers Stack Exchange.
  • Wayback: Virus infects development environment – News – The H Security: News and features.
  • [Wayback] Compiler virus infects thousands of programs.
  • [Wayback] Compile-a-virus – W32/Induc-A | Naked Security.
  • [Wayback] Novel Malware XcodeGhost Modifies Xcode, Infects Apple iOS Apps and Hits App Store – Palo Alto Networks BlogPalo Alto Networks Blog.

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in *nix, Conference Topics, Conferences, Delphi, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Development, Event, Fun, Internet, link rot, Power User, Quotes, Software Development, T-Shirt quotes, WWW - the World Wide Web of information, xCode/Mac/iPad/iPhone/iOS/cocoa | Leave a Comment »

The curse of the Project.res file.

Posted by jpluimers on 2016/11/29

A long time ago, Lars Fosdal wrote this on the Delphi G+ group:

It really is beyond me why there is no Project.rc file which includes

  • Project.version.rc
  • Project.icon.rc
  • Project.themes.rc
  • Project.manifest.xml
  • and so forth.

That way, the .res file would be a compile-time thing (or even a thing of the past) – and the resource linker would assemble the various bits from their individual sources.

It has been an issue forever. Vincent Parrett correctly commented that if you clean out too much out of the Project.res file, the IDE gets confused:

The only thing it is used for is version info and the mainicon (the IDE gets confused if don’t do that).

In my own experience, this isn’t the case for all Delphi versions, but I forgot which versions suffer and which don’t. I think the IDE theming issue omitting the Application word in the .dpr is related.

Like many of the G+ commenters, I’ve switched to script based resources for my own projects a long time ago. That’s also the reason why I forgot: this approach just works for any Delphi version.

This post is a reminder to self to see if the IDE has finally refrained from doing Project.res handling itself.

–jeroen

Source: The curse of the Project.res file…

Some related posts:

  • Howdy all. Is it possible to get the IDE to build .res files from a RC file,… (fails in .dpk files)
  • twm’s homepage – dzPrepBuild for Delphi (English)
  • IDE theming issue omitting the Application word in the .dpr

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 1, Delphi 10 Seattle, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 5 Comments »

Wow – people still working on Delphi 6 and 7 based code! Got new votes for answer to get rid of empty DDP files

Posted by jpluimers on 2016/10/27

Only Delphi 6 and 7 used DDP files (still a nice concept: diagrams to help understanding your DFM files)

A long time ago, I wrote a stackoverflow answer and later a blog post on how to find and get rid of empty DDP files as both Delphi versions had the habit of creating them:

  • Delphi 7 turn off creation of DDP files – Stack Overflow [WayBack]
  • Blast from the past: Deleting empty Delphi .ddp files

The blog post was when I helped moving an ancient Delphi project to a more modern Delphi version (due to some personal stuff going on I never finished it) and I never used such old Delphi stuff again.

This week that answer got quite a bunch of upvotes on the stakcoverflow answer which means people are still using Delphi 6 and 7 based code. Who’d ever thought that 15 year old versions would still be used today?

–jeroen

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 6, Delphi 7, Development, Software Development | 9 Comments »

UCL as a Delphi package name suffix – remember before the KSDev days?

Posted by jpluimers on 2016/08/31

A while ago, I noticed the UCL as a suffix in a few 3rd party Delphi package names.

It was from a version close to the very first FireMonkey release. FireMonkey is based on the OpenGL based VGScene (and in part DirectX based [WayBack] DXScene) which was bought form KSDev in 2011.

Contrary to VGScene and DXScene, the early versions of FireMonkey were buggy and when updating to a new version you had to cope with a lot of breaking interface changes. In Delphi XE2 for instance, there were two totally different implementations (FMX for Windows and OS X; FMI for iOS) that merged after Delphi XE3.

Around Delphi XE6 it became more stable and now – apart from some design issues I wish they had done differently – it is coming along sort of OK for Windows and for cross-platform development.

Compared to the VCL you have a lot less HiDPI issues but the designer is much more layered (which gives you the same design-time pain as WPF) and the default “Live Binding” is still buggy as hell (though if you use something like MVVM or roll your own UI bindings it becomes bearable).

A long time ago – during the Kylix era – Borland developed the cross-platform CLX library which – for the UI part – was based on Qt and ran on both Windows and Linux.

It looks like before the KSDev take over there seemed to be a UCL (would that have been for Universal Component Library or Universal Control Library?) as the name pops up in quite a few package names.

Browsing through the source code I could not find any hints so I really wonder what UCL was about. Was it again based on Qt (which compared to the Kylix era has become much more mature and has widespread use) or a different technology like LCL (given that in Delphi XE2 they used FreePascal to compile for iOS)? I rule out OpenGL as otherwise the VGScene acquisition would have been done a lot earlier.

–jeroen

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 6, Delphi 7, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, FireMonkey, Kylix, OS X FMX, Software Development | Leave a Comment »

Why sometimes you *want* to to have your DFM files stored as binary

Posted by jpluimers on 2016/08/25

Delphi Component/Tool vendors have to support a truckload of Delphi and C++ Builder versions which can be a pain: they have to work around problems in Delphi and C++ Builder versions that have long been abandoned by Borland/CodeGear/Embarcadero/Idera/…

This means that sometimes the Delphi Component/Tool vendors have to work around stuff in a way normal applications vendors would never do.

Recently I learned that sometimes this can be a painful thing: keeping DFM files in binary state.

I’m not kidding about either the DFM file format nor about supporting old versions:

  • Delphi has supported text based DFM files since like Delphi 2 for most of the features (yes, ‘most’ is the crucial word here) and by default stored DFM files in text format since Delphi 5.
  • For the Component/Tool Vendors, even Delphi 7 makes money though usually less than Delphi 2007 or the C++ Builder side of things.

The ‘most’ applies to this nice ARM compiler bug in Delphi 19.0.13856.4978 (for mere mortals, that’s Update 1 for RAD Studio XE5, Delphi XE5 and C++Builder XE5; I wish vendors would list those numbers/products in a central place):

  • [Android] MsBuild (dccAarm) error when compile FireMonkeyMobile projects with fmx forms
  • Project:  Delphi
  • Build #:  19.0.13856.4978

Source: [WayBack] QualityCentral

That’s why TeeChart still has most DFM files stored as binary files (again the ‘most’ word).

For version control and searching this is a pain, so normal application developers (the ones not using Delphi XE5 Update 1 for Android work) should run convert.exe with the -t (target=text) switch on DFM binary files.

Oh: this is fixed in version 19.0.13856.4978 (yes, that’s XE5 Update 2).

–jeroen

Via:

  • Borland Delphi 6 Developer’s Guide – Steve Teixeira, Xavier Pacheco – Google Books
  • DFM Converter, convert.exe – Delphi in a Nutshell [Book]
  • Quality Central bug 121004: [Android] MsBuild (dccAarm) error when compile FireMonkeyMobile projects with fmx forms
  • Update 1 for RAD Studio XE5, Delphi XE5 and C++Builder XE5
  • Update 2 for RAD Studio XE5, Delphi XE5 and C++Builder XE5
  • Delphi XE5 Update 2 got released last week, end-of-year Delphi XE5 offer, #CodingInDelphi book « The Wiert Corner – irregular stream of stuff

 

Rate this:

Share this:

  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on Bluesky (Opens in new window) Bluesky
  • Share on Tumblr
  • Click to share on Reddit (Opens in new window) Reddit
  • Pocket
  • Click to share on Threads (Opens in new window) Threads
  • Tweet
  • Click to share on Telegram (Opens in new window) Telegram
  • Click to share on Nextdoor (Opens in new window) Nextdoor
  • Click to share on WhatsApp (Opens in new window) WhatsApp
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email
Like Loading...

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Kylix, QC, Software Development | Leave a Comment »

« Previous Entries
 
Blog at WordPress.com.
  • Subscribe Subscribed
    • The Wiert Corner - irregular stream of stuff
    • Join 723 other subscribers
    • Already have a WordPress.com account? Log in now.
    • The Wiert Corner - irregular stream of stuff
    • Subscribe Subscribed
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
  • Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
    To find out more, including how to control cookies, see here: Cookie Policy
  • %d