Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zugriff auf Pointervariablen (https://www.delphipraxis.net/74110-zugriff-auf-pointervariablen.html)

Alfonso 28. Jul 2006 08:00


Zugriff auf Pointervariablen
 
Hallo,

ich verwende den Virtual Treeview. Dort werden Pointerrecords verwendet, z.B.
Delphi-Quellcode:
type
  TTreeData = record
    FCaption: String;
    FColumn1: String;
  end;

var
  Data: ^TTreeData;
Meine Frage bezieht sich auf den Zugriff auf Data. Der Compiler erlaubt mir der Zugriff mit Data^.FCaption sowie Data.FCaption. Wenn ich With Data verwende, muss ich Data^ verwenden; ohne ^ gibt der Compiler einen Fehler.

In der Anleitung vom Treeview stehen die Beispiele ohne ^. In dem Tutorial im dsdt.info steht es mit ^.

Was ist nun richtig? Oder ist es gleichwertig?

Gruß
Alfonso

Muetze1 28. Jul 2006 08:04

Re: Zugriff auf Pointervariablen
 
Es ist bei Delphi gleichwertig, da man das ^ weglassen kann. Der With Block kann dies aber nicht, da er sonst nicht weiss, wass er dir innerhalb des With/Do Blockes zur verfügung stellen soll: dereferenziert oder die Zeiger auf dei Inhalte.

Ich für meinen Teil würde die ^ trotzdem immer schreiben, damit fällt es einem beim lesen eines Quelltextes auch sofort auf womit man es zu tun hat.

Ralf Kaiser 28. Jul 2006 08:09

Re: Zugriff auf Pointervariablen
 
Zitat:

Zitat von Alfonso
In der Anleitung vom Treeview stehen die Beispiele ohne ^. In dem Tutorial im dsdt.info steht es mit ^.

Was ist nun richtig? Oder ist es gleichwertig?

Halli Hallo,

es ist gleichwertig.

Das "Dach" (^) dereferenziert ja den angegebenen Pointer. Wenn auf Daten "hinter" dem Pointer zugegriffen wird dann dereferenziert Delphi automatisch, ohne daß man das ^-Zeichen angeben muss. Viele Leute schreiben es aber trotzdem um im Source deutlich zu machen, daß es sich um einen Pointer handelt.

Ich glaube in früheren Delphi-Versionen wurde nicht automatisch dereferenziert (bin mir aber nicht sicher wann dieses Feature in Delphi eingeführt wurde) und da musste man das ^-Zeichen noch schreiben.

Ciao,
Ralf

Alfonso 28. Jul 2006 08:13

Re: Zugriff auf Pointervariablen
 
Vielen Dank.

Ich habe Pointers zum letzten mal mit Turbo Pascal benutzt und dort musst man immer ^ eingeben.

Gruß

Alfonso


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz