[Lazarus] Exception in CreateForm after conversion from Delphi

Frederic Da Vitoria davitofrg at gmail.com
Thu Nov 21 12:13:19 CET 2013


Hello,

I am converting a set of old small applications which I probably wrote in
Delphi 1 or 2, first version of the sources I have dates from 1996, last
version (the version I am converting to Lazarus) from 1999, probably last
updated in Delphi 3

I already did the conversion once with Lazarus 1.2 RC1. This first
conversion had to be redone because Lazarus signaled an error converting
the .res file. I don't remember what I did exactly, but I finally got a
conversion without the .res error.

Running the new application raised an exception during creation of the main
form (this will be explained below), so I decided to start again from a new
conversion using Lazarus 20.1.0.14.

Lazarus 20.1.0.14 again signals an error while converting the .res file.

First compilation shows a few simple warnings about hiding inherited
methods. I also get a hint about an exitProc which I'll explain later. So I
remove them with hints and recompile. Lazarus hangs at that point, nothing
in the output window, impossible to close the IDE (although it is
responsive, I can for example open menus). I end up stopping Lazarus
forcefully.

After reloading Lazarus, I get the same error about the .res file. I
overwrite the .res with the one 1.2 RC1 generated, and now it compiles.

When running the application, I get again the same exception. So I decide
to try to correct some code which is probably not valid any more: I move
the contents of an exitProc to the finalization section and remove exitproc
handling.

I still get the same exception as with 1.2 RC1: error 1407 in
Win32WSControls.FinishCreateWindow. This is triggered by the first
CreateForm which is in the dpr. If I comment out the CreateForm, I get the
same exception for the next CreateForm. The debugger shows that upon
calling CreateWindowEx, pClassName contains "Window".

I found on the Lazarus forum a discussion about error 1407 in 2009. The
solution was to add Application.initialize in the lpr. But the converter
did not create a lpr file, so I checked the dpr file and indeed found that
Application.initialize was missing. Adding it solved my problem.

Why didn't the converter create a lpr file? Did I do something in the
settings which caused this? I checked the conversion by 1.2 RC1, I did get
a lpr, but it did not contain Application.initialize either. Shouldn't the
converter add this line?

What are those .res conversion errors? The only reference I found is in the
Code_Conversion_Guide, but it seems quite outdated, and I could not find
reference to the resources files in the converter documentation.

-- 
Frederic Da Vitoria
(davitof)

Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20131121/604e5a88/attachment-0002.html>


More information about the Lazarus mailing list