Lazarus+Freepascal Exception - Reihenfolge der Objekt-Initialisierung schuld?

scratch

Lieutenant
Registriert
Feb. 2009
Beiträge
932
Gelöst, danke.


Hey hey,

habe eine Frage zur Reihenfolge der Initialisierung der Objekte, die ich in einem Programm nutze, geschrieben in Freepascal in der Lazarus IDE.
Ich nutze in einem TValueListEditor (Tabelle mit 2 Spalten) das Ereignis "OnSelection", um das Anklicken oder Auswählen dieses Objekts abzufangen und die ausgewählte Zelle festzustellen. Die Prozedur ändert dann ein TLabel. Leider kommt es beim Start des Programms zu einer Exception (Kompilierung erfolgt ohne Probleme), aber nur dann, wenn ich ein TLabel anspreche, welches erst NACH dem TValueListEditor zu dem Projekt hinzugefügt wurde. Ich gehe daher davon aus, dass beim Start zunächst TValueListEditor erzeugt und dabei sofort dieses Ereignis ausgelöst wird, welches dann das in dem Moment noch nicht existente TLabel ansprechen möchte. Nutze ich ein bereits vorher hinzugefügtes TLabel, funktioniert alles problemlos.

Kann mir damit jemand helfen? Danke!

[Edit]
Habe in der Unit1.lfm die Reihenfolge der Objekte geändert, und dann geht's. Allerdings speichert Lazarus die Objekte nach 2-3 Kompilierungen wieder in der alten, fehleranfälligen Reihenfolge?

[Edit2]
Lazarus legt ein Backup unter lib\x86_64-win64\ an, welches dann wieder rüberkopiert wird. Habe nun gefunden, wie man an die .lfm direkt über die IDE kommt, nun klappt alles. Dennoch die Frage - wie kann man dieses Problem durch solche Abhängigkeiten, wenn sie denn beispielsweise auch mal gegenseitig existieren, vermeiden?
 
Zuletzt bearbeitet:
So schwer ist's nicht, das Problem nachzuvollziehen, vor allem nicht, wenn man sich mit Delphi oder eben Lazarus und deren Pascal-Compilern auskennt. 'Nen Codeblock hätte inital auch nix geholfen, da mir zu dieser Zeit das Vorhandensein und die Bedeutsamkeit der .lfm-Datei nicht bekannt war und der Rest des Codes keine Mängel hergibt, die ich nicht eh schon im Text beschrieb. Meine Vermutung war aber richtig, und so konnte ich es selber lösen - dank meiner Kristallkugel. :P
 
Zurück
Oben