Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal SigSegV bei FormCreate (https://www.delphipraxis.net/209906-sigsegv-bei-formcreate.html)

ManniSt 6. Feb 2022 14:26

Delphi-Version: 5

SigSegV bei FormCreate
 
Hallo zusammen,

habe da eine neue Form kreiert, die mit einem Testetxt auch super angezeigt wird.

OnCreate startet auch, die Form wird korrekt dargestellt.
Nur...: Wenn ich da F_Menu.Top oder ähnliches, was sich auf F_Menu bezieht, eingebe erscheint ein SigSegV.

Beim Kompilieren gibt es keine Fehlermeldungen.
Der Pieps kommt, ich kann auch Objekte auf der Form ändern.
F_Menu. ....... erzeugt den SigSegV

Hat da jemand eine Idee?

Gruß

Manni
-----------------------
Aufruf aus der aufrufenden Form:

Code:
  F_Menu := TF_Menu.Create(Nil); //Form wird erstellt
  F_Menu.ShowModal;         //Form wird angezeigt
  FreeAndNil(F_Menu);       //Form wieder freigeben
--------------------------
In F_Menu:

Code:
procedure TF_Menu.FormCreate(Sender : TObject);

begin
  tone(440,250);
  F_Menu.Width := 300;
end;                        // procedure TF_Menu.FormCreate

DeddyH 6. Feb 2022 15:23

AW: SigSegV bei FormCreate
 
Delphi-Quellcode:
procedure TF_Menu.FormCreate(Sender : TObject);

begin
  tone(440,250);
  // Wer ist hier F_Menu? Die globale Variable?
  // F_Menu.Width := 300;
  // besser so versuchen:
  {self.}Width := 300;
end;

ManniSt 6. Feb 2022 17:10

[Gelöst] SigSegV bei FormCreate
 
Genau das war die Antwort. Ich habe die Width nach OnActivate verschoben und voila ...

Danke!

himitsu 6. Feb 2022 17:48

AW: SigSegV bei FormCreate
 
Nein, es ist nicht die Lösung.

Es wird NIEMALS aus der Form auf die gleichnamige globale Variable zugegriffen.
-> Self oder weglassen (implizites Self)

Hättest du deine Form mit Visible=True (im FormDesigner/DFM) erstellt, dann könnte es dennoch knallen.

Und würdes du den Debugger benutzen, dann wäre dir bestimmt aufgefallen, dass F_Menu NIL war, da im FormCreate.



Außerdem ist es doch ein bissl blöd, wenn während des Ladens sich die Größe der "sichtbaren" Form ändert?



PS: Setze lieber ClientWidth statt Width, denn in der DFM ist bestimmt ClientWidth gespeichert und da Embarcadero grob fahrlässig zu dämlich ist einen Bug zu beheben, sollte niemald Width und ClientWidth gemischt werden.

TurboMagic 6. Feb 2022 18:55

AW: SigSegV bei FormCreate
 
Um welchen Bug geht es bei Width vs. ClientWidth?

Delphi.Narium 6. Feb 2022 19:13

AW: SigSegV bei FormCreate
 
Und dabei bitte berücksichtigen, dass wir hier von FreePascal reden und das ist (noch) nicht von Embarcadero ;-)

himitsu 6. Feb 2022 20:20

AW: SigSegV bei FormCreate
 
Ja, aber wer weiß was alles "gleich" gehalten wird. :stupid:

Nja, damals in D7 gab es das neue Problem noch nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz