![]() |
Error bei Einbindung von einer projektextern erstellten Unit
Hallo Leute,
ich habe schon viel von euren Tipps in den letzten 4 Wochen, in denen ich mit Lazarus angefangen habe, profitiert. Jetzt habe ich aber noch ein Problem, wo ich nicht weiterkomme: Ich hab ein Hauptprojekt, habe in diesem auch mehrere Formen erstellt (projektintern). Jetzt dachte ich mir aber, dass ich mal eine Form in einem neuen Pojekt erstelle und es dann anschließend in meinen Hauptprojektordner reinkopiere, unter uses... angebe. Ich habe es auch über den Projektinspektor hinzugefügt und es müsste eigentlich alles problemlos klappen. Lazarus erkennt auch die Form und die Unit. Wenn ich dann aber über meinen Button die Form aufrufen möchte (FormX.show; ) (das mit dem show schlägt mir Lazarus auch von allein vor, wenn ich FormX. eingebe und kurz warte, daraus schließe ich, dass alle nötigen verknüpfungen eigentlich da sein müssten.), dann kommt die Fehlermeldung: "external SIGSEGV In Datei: '.\include\customform.inc' in Zeile 2190" und dann springt er automatisch zur Stelle: procedure TCustomForm.Show; begin Visible := True; BringToFront; end; und unterstreicht die "Zeile Visible := True" Hm, was ist nun falsch? Visible ist von anfang an auf False gestellt (also von FormX). Vielen Dank für eure Unterstützung. LG, Thomas |
AW: Error bei Einbindung von einer projektextern erstellten Unit
Vielleicht läßt du Visible := True; einfach mal weg, denn Show setzt ja bereits Visible auf True.
|
AW: Error bei Einbindung von einer projektextern erstellten Unit
Hast du das Formular auch erzeugt? Von der IDE (jedenfalls kenn ich das von Delphi) werden neue Formulare automatisch erzeugt (Eintrag in dpr).
Wenn du ein existierendes Formular hinzufügst wird das nicht geschehen und du greifst auf ein nicht initialisiertes Objekt zu. |
AW: Error bei Einbindung von einer projektextern erstellten Unit
Mir ist dennoch nicht so recht klar, was er eigentlich macht:
Zitat:
Delphi-Quellcode:
Ist TCustomForm jetzt plötzlich FormX oder eine Procedure seiner Hauptunit, auf der sich der erähnte Button befindet? Ich steig' da nicht durch :?:
procedure TCustomForm.Show;
begin Visible := True; BringToFront; end; Ansonsten hast du natürlich vollkommen recht: Ohne vorheriges (am besten in OnCreate) FormX := TFormX.Create; gibt's keine Instanz. @thomassolymosi Gehen wir mal davon aus, daß TCustomForm die Klasse deines Hauptformulars ist, dann rufst du im Buttonklick das hinzugefügte und erzeugte (instanziierte) Formular FormX mit oben in fettem Blau dargestellten Code auf. Visible = True und BringToFront sind unnötig, weil Visible bei Show automatisch auf True gesetzt wird und ebenso automatisch das angezeigte Formular im Vordergrund steht. |
AW: Error bei Einbindung von einer projektextern erstellten Unit
Hi, vielen Dank für eure schnellen Antworten!
Mein Fehler war es, dass ich die Form vorher nicht created habe, so wie ihr es geschrieben habt. Jetzt läuft alles wunderbar =) Ich habe mir schon gedacht, dass es nur was ganz kleines ist. Zu deiner Frage, Perlsau: Deer Code, den ich gepostet habe, befand sich in dem Quellcode Customform.inc von Lazarus selbst. Also ist das (vllt.!?) eine Unterprozedur die ich mit "FormX.show;" aufrufe und an der stelle hat er mir dann ein Error rausgespuckt. Vielen Dank! LG, Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz