![]() |
Pointer Frage
Hallo Leute
also, ich versuche mich gerade an Zeigern, habe aber eine unklare Situation geschaffen. Ich möchte als Beispiel, eine Stringliste erstellen, zurückgeben will ich den Zeiger als Integer Wert. Danach möchte ich in die Stringliste etwas einfügen, habe den Wert den ich einfügen will, und den Zeiger auf die Liste als Integer. WIE kann ich jetzt die Liste greifen und etwas eintragen? Mein Versuch:
Delphi-Quellcode:
{...}
var zeiger: integer; p: pointer; strl, mylist: tstringlist; begin strl := tstringlist.Create; strl.add('Hallo'); p := @strl; zeiger := Integer(p); ShowMessage('Der Zeiger als Nummer: '+IntToStr(zeiger)); mylist := TStringlist(Pointer(zeiger)); mylist.Add('Welt!'); ShowMessage(mylist.Text); {...} |
AW: Pointer Frage
Nur als Warnung: dieser Code wird nicht mehr funktionieren, sobald Emb. einen 64bit-Compiler rausbringt.
|
AW: Pointer Frage
Zitat:
@Topic: Es ist quasi sinnlos einen Zeiger auf ein Objekt zeigen zu lassen, da eine Objektreferenz bereits ein Zeiger ist. ==>
Delphi-Quellcode:
var
p: tstringlist; strl, mylist: tstringlist; begin strl := tstringlist.Create; strl.add('Hallo'); p := strl; ShowMessage('Der Zeiger als Nummer: '+IntToStr(Integer(P))); mylist := p; mylist.Add('Welt!'); ShowMessage(mylist.Text); |
AW: Pointer Frage
Zitat:
|
AW: Pointer Frage
Zitat:
P.S.: Falls das ganze nur so eine Fingerübung ist, um mal ein wenig mit Pointer zu spielen empfehle ich für diesen Zweck records ;) |
AW: Pointer Frage
Ich glaube ich muss da weiter ausholen.
Ich arbeite mit einem Script Interpreter, die Verarbeitung von Listen, Dateien und anderen Objekten soll so wie folgt laufen: Beispiel:
Delphi-Quellcode:
Dafür ist es erforderlich, das ich mittels ListCreate eine Stringliste zur Laufzeit erzeuge, und diese Liste Anhand der "Nummer" - also dem Zeiger - identifizieren und verarbeiten kann.
{...}
var list integer list := ListCreate () ListAdd (list, 'mein Eintrag 1') ListAdd (list, 'mein Eintrag 2') ListSaveToFile (list, 'C:\MeineListe.txt') ListFree (list) {...} |
AW: Pointer Frage
was spricht gegen
var list Pointer ?? |
AW: Pointer Frage
Gute Idee, aber ich brauche die Adresse der Liste als Ganzzahl
|
AW: Pointer Frage
Zitat:
|
AW: Pointer Frage
Dann kannst Du ihn wie Du vorhattest (und fast alle es tun) als Integer casten.
gegf. habe wir alle Glück und Pointer werden wie Integer bei D64bit beide 8 Byte lang, dann passts eh wieder. ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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