Hallo Klaus,
wieso Delphi 5? Wurde nicht von mir eingetragen.
In der Signatur steht doch Delphi 10 Seattle!
Zitat:
Was aber aus #1 nicht hervorgeht.
Ich habe im ersten Thread die komplette Routine hineingeschrieben.
Daraus geht eindeutig hervor, dass es sich um einen Typisierten Zeiger handelt, der meiner Meinung nach im Heap gespeichert wird.
Zitat:
Ja, wenn "Eingabe" als ^String deklariert ist, ist das so.
Ja, ist im ersten Thread klar erkennbar.
Bitte Beitrag richtig lesen, um weitere Verwirrung meinerseits zu vermeiden.
Zudem schreibst du in deiner ersten Antwort, dass
IntToStr(Integer(Eingabe)) + #13#10 + // Adresse des mit New allozierten Speicherbereichs
,
wobei die beiden anderen Aufrufe(@ und Addr()) für Adresswiedergabe zuständig sind.
Also noch einmal:
Wenn "
Eingabe" ein
Typisierter Zeiger ist, sollte folgendes gelten/funktionieren.
Eingabe^ = Ausgabe des Speicherinhaltes/abgelegten Wertes
IntToStr(Integer(@Eingabe)) = Ausgabe der Speicheradresse
IntToStr(Integer(Addr(Eingabe))) = Ausgabe der Speicheradresse
IntToStr(Integer(Eingabe)) = ? (ohne Dereferenzierung)
Hierbei ist noch folgendes zu erwähnen.
Der zurückgegebene Wert aus IntToStr(Integer(Eingabe)) entspricht genau dem Wert, der in Überwachte Ausdrücke/Lokale Variablen im Feld Wert angezeigt wird, lediglich von Hexadezimal zu Integer umgewandelt.
Was gibt IntToStr(Integer(Eingabe)) zurück, wenn, wie in diesem Fall, Eingabe ein Zeiger ist?
Gruß