AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointeradresse auslesen

Ein Thema von paul.kunig · begonnen am 11. Sep 2019 · letzter Beitrag vom 21. Sep 2019
Antwort Antwort
paul.kunig

Registriert seit: 25. Sep 2017
42 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Pointeradresse auslesen

  Alt 11. Sep 2019, 18:31
Das ist völlig irrelevant, ob der Speicherplatz ausreicht. Es ist lediglich ein Test zum Verständnis von Zeigern.
Wenn ich die Speicheradresse eines Zeigers ausgeben will, muss ich wohl in einen Integer casten, da ich einen Zeiger nicht anzeigen kann.

Noch einmal die Frage:
Was gibt IntToStr(Integer(Eingabe)) zurück, wenn, wie in diesem Fall, Eingabe ein Zeiger ist?
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: Pointeradresse auslesen

  Alt 12. Sep 2019, 08:52
Das ist völlig irrelevant, ob der Speicherplatz ausreicht. Es ist lediglich ein Test zum Verständnis von Zeigern.
Wenn ich die Speicheradresse eines Zeigers ausgeben will, muss ich wohl in einen Integer casten, da ich einen Zeiger nicht anzeigen kann.

Noch einmal die Frage:
Was gibt IntToStr(Integer(Eingabe)) zurück, wenn, wie in diesem Fall, Eingabe ein Zeiger ist?
Leider hast Du Dir zur Erforschung von Zeigern einen Kandidaten ausgesucht, der die Sache kompliziert macht. Ein String ist bereits eine Zeiger. D.h. ^String ist ein Zeiger auf einen Zeiger. Ich würde vorschlagen, dass Du die Sache vielleicht zunächst mal etwas einfacher gestaltest:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Eingabe: ^Integer; // für die Variable "Eingabe" wird Platz auf dem Stack reserviert
begin
  New(Eingabe); // reserviert Platz für den Integer im Speicher
  Eingabe^ := 123; // der reserviert Platz wird mit einem Wert gefüllt

  ShowMessage(IntToStr(Eingabe^) + #13#10 + // Erwartete Ausgabe "123"
  IntToStr(Integer(Eingabe)) + #13#10 + // Erwartete Ausgabe: Wert des Zeigers auf "123"
  IntToStr(Integer(@Eingabe)) + #13#10 + // Erwartete Ausgabe: Adresse der Variablen "Eingabe" (die Adresse auf dem Stack)
  IntToStr(Integer(Addr(Eingabe))) // wie vorherige Zeile
  );

  Dispose(Eingabe); // gibt den Platz für den Integer wieder frei
end;

Geändert von samso (12. Sep 2019 um 08:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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