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

Windows 10 Creators update and Delphi debugging don’t go well…

Posted by jpluimers on 2017/05/02

Not sure what the cause and effect are, but various people are having issues running Delphi versions on Windows 10 Creators update. Debugging takes an exceptional long time to load the debuggee.

According to Marco Cantu, it is not limited to Delphi:

“It looks like a change in libraries code relocation, and it affects all debuggers — not just ours.”

A roll-back does make them work again but … there is only a very limited time frame to roll back from Windows 10 Creators update (think days, not weeks).

So for now: if you use Delphi do not install the Windows 10 Creators update unless you:

  • can revert back to a full system backup
  • can roll back in time

Examples:

The the last link cannot be archived, not is publicly accessible, I’ve quoted some parts:

The debugger goes haywire for everyone in our organization with Creators and Tokyo/Berlin. Reverting to Windows Anniversary brings back the sanity.

Debugger problems with Tokyo/Berlin and Creators:

  • App takes a long time to load with modules loading and unloading and re-loading many times
  • IDE freezes
  • Memory consumption of bds.exe explodes, sometimes (> 3GB)

I will attached before and after screenshots showing how modules load and unload and re-load with Windows 10 Creators.

I presume these problems have the same root cause(s) than those in https://forums.embarcadero.com/thread.jspa?messageID=884382

Note that Microsoft is still fledging out issues in Windows 10 Creators Upgrade despite pushing it to more and more Windows 10 machines: [WayBackWindows 10 Creators Update rollout: First phase update – Windows Experience BlogWindows Experience Blog

–jeroen

Read the rest of this entry »

Posted in Delphi, Development, Software Development | 12 Comments »

FMX.Dialogs basically blocks mixing VCL with FMX…

Posted by jpluimers on 2017/04/27

Nice find:

Stefan Glienke+4

Look into the initialization block of FMX.Dialogs. The call to ActivateClassGroup(TFmxObject); turns off all the TRegGroups that don’t contain at least one type that inherits from TFmxObject which also happens to be the group that you register your form class to. GetClass then ignores such groups.

I don’t have the slightest idea what the intention behind all that code is but it certainly is one of the reasons why you cannot mix FMX and VCL officially.

In response to:

I have an VCL application. I need to register some form classes at run time. This is done in the form’s unit implementation section :

Initialization

If GetClass(‘TfmConnectiondialog’) = Nil Then
Classes.RegisterClass(TfmConnectiondialog);

Suddenly my class wasn’t registered anymore. GetClass(‘TfmConnectiondialog’) was always nil and Classes.RegisterClass had no effects.

After some long search, I’ve found that I’ve inadvertently added an FMX.Forms in one of my unit. This was the culprit. Replacing FMX.Forms with VCL.Forms solved my problem.

Behaviour is really strange, why Classes.RegisterClass didn’t throw any exception ? Is this a “Bug” or is this “as expected” ?

–jeroen

Source: Hello, I have an VCL application. I need to register some form classes at ru… [WayBack]

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi XE7, Delphi XE8, Development, Software Development | 1 Comment »

When BRCC32 throws `Fatal error Illegal macro definition in command line or defines page.` in a DUnitX project

Posted by jpluimers on 2017/04/19

I had a Fatal error Illegal macro definition in command line or defines page. thrown by BRCC32.exe in one of my Delphi projects.

As cgrc.exe could build the .rc file [source in Russian; WayBack], I reproduced it from the console with an Empty.rc file that has no content. That way I could rule out file content: now it had to be command-line arguments which is a different cause than any of the search results I found before.

My project was based on one of the DUnitX test projects. It ran in Delphi XE8, but the Delphi version doesn’t matter as BRCC32 hasn’t been updated since 1999.

Further below are the failure/success examples; this went wrong:

  1. DUnitX uses the DUNITX-DEBUG define to enable debugging of DUnitX itself in DUnitX.inc which also supports the DUNITXDEBUG define in the same area.
  2. Delphi will translate a .RC file in a project into a BRCC32.exe call adding the project conditional defines and search paths
  3. BRCC32.exe doesn’t like hyphens in conditional defines throwing a non-descriptive error Fatal error Illegal macro definition in command line or defines page.

So either removing DUNITX-DEBUG or changing it into DUNITXDEBUG solves the problem. Hence my pull-request.

Read the rest of this entry »

Posted in Delphi, Development, Resource Files and Scripts (.res/.rc), Software Development, Windows Development | Leave a Comment »

Jan Barendregt is Looking for programmers to maintain existing Excel add-in software

Posted by jpluimers on 2017/04/18

Jan Barendregt is Looking for programmers to maintain existing Excel add-in software.

The reason is no fun (cancer without curative treatment and prognosis till death likely months).

Please follow-up on the forum if you can be of help: [WayBackEmbarcadero Discussion Forums: Looking for programmers to maintain existing Excel add-in software

–jeroen

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

Delphi and the joy of Compiler Intrinsics – I cant use “Length” as a TFunc…

Posted by jpluimers on 2017/04/18

One of the reasons I favour using RTL based functionality over Delphi Intrinsic Routines like Length, Abs and others is that you cannot use compiler intrinsics in Generics. For instance Length is not compatible with TFunc<string, Integer> unless you declare it yourself like function StringLength(value: string): Integer; as otherwise you get en E2029 error (in this case the cryptic '(' expected but ';' found).

It’s one of the many areas where the Delphi compiler developers took a shortcut, but in this case I think the results are somewhat good.

Other reasons for using the RTL over compiler intrinsics have to do with scoping: the intrinsics are in the global scope which can clutter what you’re trying to work on.

So I much rather use the file and stream related functions when I’m actually working with a file or stream. For instance Assign for me has nothing to do with a file outside of a file context (it’s the reason AssignFile exists in the first place).

–jeroen

via: I cant use “Length” as a TFunc (tested in XE and XE6), but if…

Posted in Conference Topics, Conferences, Delphi, Delphi 10 Seattle, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Event, Software Development | 1 Comment »

When Delphi is missing the `ActiveX` items in the `File -> New` dialog

Posted by jpluimers on 2017/03/29

Marco Cantú posted the below solution when ActiveX is missing in your File -> New dialog which I’ve paraphrased:

OK, you can try this.

  1. Close RAD Studio/Delphi.
  2. Open the registry editor.
  3. Under HKEY_CURRENT_USER, open the Known IDE Packages\Delphi — that is something like HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\18.0\Known IDE Packages\Delphi
  4. Search for the delphicompro240.bpl, entry
  5. Edit it: remove the __ (double-underscore) pre-pended to the value (Untitled). In other word, change “__(Untitled)” into “(Untitled)“.
  6. Close registry editor.
  7. Open the IDE.

I ran it it recently and was glad this worked.

–jeroen

Source: Hey! I have a new Delphi :)…Great!  And what to do now with my favorite…

Posted in Delphi, Delphi 10.1 Berlin (BigBen), Development, Software Development | Leave a Comment »

Poor man’s MMX: Delphi Live Templates for creating a property with a type which will auto- create the getter/setter

Posted by jpluimers on 2017/03/23

Delphi Live Templates for creating a property with a type which will auto- create the getter/setter: [XML] ipropgs – Pastebin.com by Oliver Münzberg.

For when you think you can beat Model Maker Code Explorer.

via: Do any IDE add-ins have “interface completion”? I figure somebody must have done this by now? David Nottage – Google+

 

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

Kylix: The Real Lowdown – I wrote this in 2000 too

Posted by jpluimers on 2017/03/23

A while ago – while researching yesterdays post – I came across the below article that I wrote back in august 2000 for The Delphi (by Pinnacle Publishing – long gone by now) and on-line at http://www.delphidevelopernewsletter.com/dd/DDMag.nsf/WebIndexByIssue/B8FC16D8103A3760852568F600559A83

I found a cached copy first at http://www.txsz.net/xs/delphi/2/%E6%8A%80%E5%B7%A7%E5%8F%8A%E7%BB%8F%E9%AA%8C/KYLIX%EF%BC%9A%20%E7%9C%9F%E7%9B%B8.HTM and back-tracked from there.

Since the wayback machine isn’t indexed, I salvaged the copy below.

On the Delphi Tokyo release yesterday [WayBackTokyo is available today! – Martin Sedgewick – Google+: I will only try that after Update 1 is released, but based on the [WayBackWhat’s New – RAD Studio:

Like

  • Reintroduction of Linux support. Finally.
  • 64-bit as target: server side, the 32-bit days have been over for a long time
  • one-based strings (boy, I’m glad they didn’t continue on the zero-based strings they did on mobile)

Dislike

  • No openSUSE support where SuSE was the primary partner during Kylix development and launch, just search SuSE kylix; heck the registration guide is still up at [WayBackSDB:Kylix – openSUSE
  • LLVM compiler as it is way too slow for my development cycles
  • ARC based

Time will tell if it works better for me than the .NET Core for Linux I’ve been using until now.

–jeroen
Read the rest of this entry »

Posted in *nix, Delphi, Development, History, Kylix, Linux, openSuSE, Power User, Software Development, SuSE Linux | 4 Comments »

Kylix: Delphi for Linux is on the Way! – I wrote this in 2000

Posted by jpluimers on 2017/03/22

Last year, when Warren Postma wrote, I started digging for some articles I wrote about Kylix (the Delphi for Linux at the start of this century).

The second article I found (Delphi for Linux is on the Way!) was actually the first one I wrote, so I’ve put the copy below. The second article will be in my blog tomorrow.

The article below first appeared at the Pinnacle Publishing site at http://www.pinpub.com/delphi/kylix1.htm as an article for “Delphi Developers Journal” that went out of business just like “Hardcore Delphi” and “Delphi Informant Magazine” went before (actually Blaise Pascal Magazine is about the only Delphi related magazine left).

I found the title of my article through http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FDelphi%2FAboutDelphi%2FKylix%2FM.967808208.A then back-tracked the title via http://www.inner-smile.com/delphin.phtml

–jeroen

Read the rest of this entry »

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

GExperts – when your predecessor has put it under the Tools menu

Posted by jpluimers on 2017/03/21

I totally forgot that GExperts can be under the Tools men

GExperts IDE configuration

GExperts IDE configurationu (I’m so accustomed that Alt-X is GExperts and Alt-M is ModelMaker Code Explorer).

These keyboard shortcuts are only assigned when you install GExperts before you install ModelMaker Code Explorer.

If you reverse, then you have to fiddle by removing the ModelMaker Code Explorer expert, then re-add it.

Anyway: you can configure this in the “IDE” tab of the GExperts Configuration.

After that you have to restart the Delphi IDE to reflect the change.

–jeroen

Source: GExperts Help

Posted in Delphi, Development, GExperts, Keyboards and Keyboard Shortcuts, ModelMaker Code Explorer, Power User, Software Development | 2 Comments »