![]() |
an Formular übergebener Pointer ist nil
Hallo @ all...
Ich übergebe einen pointer der in der Unit eines formulares deklariert ist an ein anderes Formular. Dabei geht die Speicherzuweisung irgendwie verloren... Das Ergebnis ist nil obwohl dies eigentlich nciht sein sollte, was muss ich beachten wenn ich eine solche operation vornehme? MfG Jörn |
Re: an Formular übergebener Pointer ist nil
ein bissl quelltext wäre nett oder?
|
Re: an Formular übergebener Pointer ist nil
okay ist ja gut... ich dachte ich hätte es unmissverständlich formuliert...
Delphi-Quellcode:
Daten sind werte zugewiesen und der Pointer element ist bestimmt, abruf gibt korrekte ausgabe.
unit Unit1;
... type Zeiger : ^Daten; Daten = record ... var element : zeiger; ... Das Formular wird erzeugt und der Pointer Element von Unit1 wird auf element von unit2 übertragen, oder eben nicht, da der pointer bei nachfolgendem abruf in unit2 nicht zugewiesen ist.
Delphi-Quellcode:
unit Unit2;
... public Element : Zeiger; ... |
Re: an Formular übergebener Pointer ist nil
Zitat:
Wie sollen wir Dir sagen, wo Dein Fehler liegt, wenn Du uns nicht verrätst, was Du tust? Das was Du gepostest hast, sieht aus, wie extra konstruierte Beispieldeklarationen. Poste doch mal die entsprechenden Stellen aus Deinem Originalquelltext. Sonst muß ich mir erst ne Glaskugel kaufen.... Gruß onlinekater |
Re: an Formular übergebener Pointer ist nil
Unit 1
Delphi-Quellcode:
Unit2
...
type Element = ^TDaten; TDaten=Record index : Integer; Zeit : TDateTime; Kopf : String; //Zeichenzahl : byte Text : String; //Zeichenzahl : word Next,Prev : Element; end; ... var Anfang, Ende, tmp : Element; ... New (Anfang); tmp^.index := i; ... tmp^.Prev := Ende; Ende^.next := tmp; ... procedure KnopfDrück; begin Form2 := tForm2.create (self); Form2.Anfang := Anfang; end;
Delphi-Quellcode:
das dürfte das wichtigste gewesen sein... an manchen stellen vereinfacht, da die ganze streamgeschichte die da noch mit drin hängt nicht relevant ist und es so übersichtlicher ist...
...
type ... public Anfang, Ende, Current : Element; procedure oncreate; begin showmessage (Anfang^.text); //AV => Anfang = nil end; |
Re: an Formular übergebener Pointer ist nil
auch wenn ich die variabeln in Unit1 unter public deklariere, kann ich unitintern damit arbeiten... nur das Weitere führt dann zu einer AV
|
Re: an Formular übergebener Pointer ist nil
Na überleg mal: Du erzeugst zuerst die Form (TForm2.Create) und weist dann den Pointer zu.
Aber bevor du den Pointer zuweist, wird schon in OnCreate auf ihn zugegriffen. Du musst ins OnCreate die Zuweisung reinschreiben. |
Re: an Formular übergebener Pointer ist nil
das bringt das gleiche ergebnis... hab ich auch schon dran gedacht und ausprobiert....
aebr hast recht, so ist das totaler mist... ;-) klar... |
Re: an Formular übergebener Pointer ist nil
bisher:
Delphi-Quellcode:
besser:
procedure KnopfDrück;
begin Form2 := tForm2.create (self); Form2.Anfang := Anfang; end;
Delphi-Quellcode:
//bzw. eine weitere Methode in Form2 deklarieren + definieren, mit der du dann weiterarbeitest
procedure KnopfDrück;
begin Form2 := tForm2.create (self); Form2.Anfang := Anfang; ShowMessage(Form2.Anfang^.text); end; // Beispiel:
Delphi-Quellcode:
Form2:
procedure KnopfDrück;
begin Form2 := tForm2.create (self); Form2.Anfang := Anfang; Form2.weitereMethode(); end;
Delphi-Quellcode:
procedure weitereMethode();
begin ShowMessage(Anfang^.text)); end; |
Re: an Formular übergebener Pointer ist nil
Ich habs grade nochmal umgeschrieben, und ich weiß nicht woran es lag.... anscheinend hab ich vorher ne kleinigkeit falsch gemacht, aber jetzt geht es so... seltsam... okay dankeschön für eure hilfe....
@ 3_of_8 hattest recht... ! :wall: ;) Gruß Jörn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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