Entwickler-Ecke

Sonstiges (FPC / Lazarus) / Linux API - Formularinitialisierung zur Laufzeit


hjl - Do 25.10.18 10:54
Titel: Formularinitialisierung zur Laufzeit
Gerade versuche ich, ein Programm, von mir selbst erstellt in Embarcadero Delphi 10.2 auf Windows 7, für den Lazarus 1.8.4 / FPC 3.0.4 - Compiler (64 Bit) anzupassen.
Zunächst stellte ich fest, dass die Handhabung von Formularen, die erst im Laufe des Programms, abhängig von der Benutzung, in Embarcadero-Delphi gleich beim Programmstart im Hintergrund erzeugt werden. Im FPC-Programm passiert das nicht.
Doch selbst wenn das Formular im FPC-Programm mit erzeugt wurde mit
FormPointEdit := TFormPointEdit.Create(Application);
dann ist es scheinbar nicht möglich, anschließend auf bereits definierte Formularsteuerelemente zwecks Initialisierung zuzugreifen,
z.B. ein Editierfeld mit edtFile.Text := 'polygon01.str';
aufgerufen in einer Methode von TFormPointEdit vom Hauptformular aus, wo ein Punkt durch Anklicken ausgewählt wird, mit
FormPointEdit.InsertPoint(...);
Es kommt immer zu einem Absturz mit folgender Meldung:
"Projekt ... hat Exception-Klasse >>External: SIGSEGV<< ausgelöst. In Datei 'include\control.inc' in Zeile 3501."
Im Debugging öffnet sich dann ein Fenster auf die Datei control.inc und zeigt auf eine Zeile mit folgendem Inhalt:
GetTextMethod := TMethod(@Self.GetTextBuf);

Im Embarcadero-Delphi-Programm ist dieser Zugriff auf Steuerelemente anderer Formulare überhaupt kein Problem.

Habe ich für Lazarus/FPC etwas vergessen?
(in Lazarus/FPC programmiere ich relativ selten)
Geht das überhaupt so direkt, was ich hier vorgestellt habe?
Wenn ja, was muss ich dann tun?


Delete - Do 25.10.18 16:25

- Nachträglich durch die Entwickler-Ecke gelöscht -


Sinspin - Do 25.10.18 17:37

Als Du das Projekt des erste mal mit Lazarus geöffnet hast sollte eigentlich Wizard zum Konvertieren nach FPC/Lazarus aufgegangen sein. Hier beachten das Mode Delphi erkannt wird. Ansonsten aktivieren.
Ich arbeite an einem recht komplexen Programm mit einigen zur Laufzeit erstellten Dialogen und hatte noch keine Probleme beim Zugriff auf die Instanzen der Fenster.

user profile iconhjl hat folgendes geschrieben Zum zitierten Posting springen:
Zunächst stellte ich fest, dass die Handhabung von Formularen, die erst im Laufe des Programms, abhängig von der Benutzung, in Embarcadero-Delphi gleich beim Programmstart im Hintergrund erzeugt werden. Im FPC-Programm passiert das nicht.

Das kann genauso verwaltet werden wie bei Delphi auch. Eventuell wurde was in deinem Hauptprogramm (Quelltext des Projektes) nicht korrekt übernommen.


hjl - Fr 26.10.18 10:05

Das mit Mode Delphi hatte ich zuerst nicht berücksichtigt, aber nachgeholt. Es hat aber nichts gebracht.

Habe auch mal einen Versuch mit dem Delphi-Umwandler gemacht - totale Fehlanzeige, da geht gar nichts mehr.
Einige Korrekturen habe ich noch versucht, aber das lohnt sich wohl nicht, da ist zu vieles, was nicht mehr stimmt und nicht mehr geht.
Das scheint mir eher reine Zeitverschwendung zu sein.
Bisher hatte ich Schritt für Schritt Anpassungen durchgeführt, d.h. jedesmal, wenn es in der Embarcadero-Delphi-Version wesentlich Neues gab,
habe ich das Neue in der Lazarus/FPC-Version nachgetragen.
So hatte es bisher gut geklappt.
Allerdings war der letzte Anpassungsschritt etwas groß.

Momentan habe ich aber auch gar nicht mehr die Zeit für die Lazarus/FPC-Version.

Vielen Dank für die Antworten!