![]() |
Pointer auf Klassenvariable, die übergeben wurde, zuweisen
ich habe eine Klasse mit: (stark gekürzt)
TTest = class X : Integer [...] end; zwei Variablen (davon eine ein Pointer): Var Test : TTest TestPointer : ^Pointer; und eine Procedure: procedure Zuweisen(xx: TTest); begin TestPointer := @xx; // hier funktioniert der Pointer noch (innerhalb der Procedure) end; Die Procedure rufe ich so auf: [...] Zuweisen(Test); // ab hier funktioniert der Pointer nicht mehr ! [...] Problem: Die Pointerzuweisung funktioniert nicht richtig ! In der "procedure Zuweisen" kann ich zwar noch fehlerfrei mit dem Pointer und die Klasse zugreifen, aber wenn die Procedure beendet ist und der andere Qualltext fortgesetzt wird, treten Fehler oder falsche Werte auf ! Geht das nicht oder an was liegt es, warum ich keine Pointer auf eine Klasse zuweisen kann, die übergeben wurde ??? |
Re: Pointer auf übergebene Klasse zuweisen
Delphi-Quellcode:
Dann:
var
TestPointer : Pointer; //TestPointer : ^Pointer; wäre ein Zeiger auf einen Zeiger
Delphi-Quellcode:
Und später:
procedure Zuweisen(xx: TTest);
begin TestPointer := @xx; end;
Delphi-Quellcode:
Gruß
BlaBla...
if Assigned(TestPointer) //Enthält TestPointer gültige Adresse? then TTest(TestPointer).X := 5; // TypeCasting Zeiger als TTest-Objekt // und Eigenschaft X Wert zuweisen |
Re: Pointer auf Klassenvariable, die übergeben wurde, zuweis
Danke :hello:
aber warum funktioniert das bei Strings dann nicht ? also mit: class TTest X: String; end; und dann: TTest(TestPointer).X := 'Hallo'; wenn ich dann mit "Label1.Caption := TTest(TestPointer).X;" lese, kommen so "komische" Zeichen ! bei Zahlen gehts einwandfrei ! |
Re: Pointer auf Klassenvariable, die übergeben wurde, zuweis
Müsste die Procedure Zuweisen nicht so
Delphi-Quellcode:
deklariert sein, da sonst doch IMHO nur der Pointer der lokalen Übergabevariablen "xx"
procedure Zuweisen(var xx : TTest);
begin blah.... auf Testpointer geschrieben wird. (Die zudem nach Beendigung der Procedure freigegeben wird). Wir wollen aber doch den Zeiger auf das Argument oder habe ich mich da getäuscht??? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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