![]() |
Objekt-Zeiger in einem String-Parameter "transportiere"?
Hallo! Ich habe eine Funktion auszuführen (zu der ich leider kein Quellcode besitze), die mehrere Sting-Parameter enthält. Nach der Ausführung der Funktion wird ein Event ausgelöst, der einige dieser Strings wieder zum Abruf bereitstellt.
Wäre es ohne Weiteres möglich, einem String-Parameter ein Pointer auf ein Objekt zuzuweisen und diesen String dann wieder in den Pointer zu konvertieren? Eigentlich stelle ich mir ein Pointer als ein Integer vor:
Delphi-Quellcode:
s := IntToStr(integer(Pointer(MyObject)));
und dann
Delphi-Quellcode:
Obj := TMyObject(Pointer(StrToInt(s)));
sollte eigentlich klappen, tut es aber nicht und meldet eine AV bei der Umwandlung des Strings zurück in den Pointer. Was mache ich falsch? |
AW: Objekt-Zeiger in einem String-Parameter "transportiere"?
Hallo,
eventuell so:
Delphi-Quellcode:
type
TMyObj = class(TObject) private FStr: string; end; ... procedure TForm1.Button1Click(Sender: TObject); var MyObj1, MyObj2: TMyObj; PMyObj2: ^TMyObj; s: String; begin MyObj1:=TMyObj.Create; MyObj1.FStr:='Hallo'; s:=IntToStr(integer(@MyObj1)); PMyObj2:=Pointer(StrToInt(s)); MyObj2:=PMyObj2^; Memo1.Lines.Add(MyObj2.FStr); MyObj1.Free; end; |
AW: Objekt-Zeiger in einem String-Parameter "transportiere"?
Niemals
Delphi-Quellcode:
für Pointer Casts verwenden, sondern
Integer
Delphi-Quellcode:
/
NativeUInt
Delphi-Quellcode:
. Sonst hast du unter 64-Bit ganz schnell ein Problem.
UIntPtr
|
AW: Objekt-Zeiger in einem String-Parameter "transportiere"?
Hallo Zacherl,
Du hast Recht. Ich bin auch noch von einer 32-Bit Umgebung ausgegangen. So müsste es besser sein.
Delphi-Quellcode:
...
s:=UIntToStr(NativeUInt(@MyObj1)); PMyObj2:=Pointer(StrToUInt(s)); ... |
AW: Objekt-Zeiger in einem String-Parameter "transportiere"?
Perfekt, vielen Dank!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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