![]() |
Form Create
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute
Ich versuch mein Programm etwas abzuspecken und bin auf ein Problem gestoßen. um das Ganze etwas abzukürzen habe ich ein kleines Demo gebastelt. Das Problem zum umschreiben ist etwas kompliziert deshalb das Demo Es sind 4 Button auf den Formular ( Demo 1, Demo 2, Test 1, Test 2 ). und Demo 1, und Test 1 bekomme ich immer eine Speicherschutzverletzung. Im Grunde ist kein unterschied zwischen Demo 1 und Demo 2 ( Test 1 und Test 2 ) Trotz dem der Fehler. habe leider keine Ahnung warum. :wall: :wall: für etwas Unterstützung währe ich sehr Dankbar Gruss Tau |
Re: Form Create
Moin!
Wieso nutzt du auch das Application.CreateForm() ?? Das sollte so oder so am besten nur vor dem Application.Run in der DPR aufgerufen werden. Wenn du zur Laufzeit Formulare erzeugen willst, dann nimm den normalen Constructor:
Delphi-Quellcode:
/EDIT:
Fm := TForm2.Create(Application);
Der Fehler liegt ganz wo anders: Warum so:
Delphi-Quellcode:
Anstatt so:
Fm1.Width := 250;
Delphi-Quellcode:
??
Width := 250;
Und genau dein Problem zeit die Verwendung von globalen Variablen in der Unit zum Zugriff. Vielleicht hast du irgendwann mal 2 Instanzen von TFm1 und mit deinem Code greifen beide Instanzen immer auf den Wert von nur einer Instanz zurück anstatt auf ihren eigenen Wert. Und das Problem liegt genau bei dem Zugriff - bekommt man ja leicht beim debuggen raus: Du übergibst deinem Support DataModul die Instanzenvariablen - das ist schön, aber sie sind nicht als VAR deklariert, somit werden die übergebenen Original Variablen Dm1 und Fm1 niemals mit dem richtigen Wert gefüllt, somit geht der Aufruf schief. Ruf einmal zuerst die unteren beiden Buttons auf und dann klappt es oben auch - weil die unteren ordentlich die Variablen füllen. Und solche Zugriffe wie du sie machst mit Fm2.Width sind so oder so kreuz gefährlich. Wenn du dir die Form nicht auto-instanziieren lässt durch Delphi (AutoCreateForm), dann schmeiss die Variable in der Unit raus - das bricht irgendwann mal das Genick... MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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-2025 by Thomas Breitkreuz