Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeiger auf Zeiger (https://www.delphipraxis.net/11641-zeiger-auf-zeiger.html)

Tester 11. Nov 2003 07:19


Zeiger auf Zeiger
 
Hallo zusammen!

Hätte mal ne kleine Frage, kann man in Delphi einen Zeiger auf Zeiger setzen?

In C++ kann man das ja mit

Code:
 int **p;
lösen.

Danke im voraus

Gruß Tester

[edit=Daniel B]Doppelpost gelöscht.[delphi] Mfg, Daniel B[/edit]

choose 11. Nov 2003 07:56

Re: Zeiger auf Zeiger
 
In Delphi scheint es nicht direkt (mit ^^) zu funktionieren sondern nur mit einem "Hilfstyp":
Delphi-Quellcode:
type
  PInteger = ^Integer;
  PPInteger = ^PInteger; //^^Integer doesnt seem to work
derefenziert werden kann dann aber doch mit
Delphi-Quellcode:
var
  myPPInt : PPInteger;
  myPInt : PInteger;
begin
  //...
  myPInt:= myPInt^;
  myPPInt^^:= 42;

Robert Marquardt 11. Nov 2003 09:42

Re: Zeiger auf Zeiger
 
Es ist vom Typkonzept von Delphi her auch konsequent das ^^ nicht erlaubt ist.
^Integer ist ja ein unbenannter Typ, der natuerlich zu allen anderen Typen inkompatibel ist.

choose 11. Nov 2003 10:23

Re: Zeiger auf Zeiger
 
Hallo Robert Marquardt,

das klingt Interessant. Ich bin gerenell an Konzepten hinsichtlich Designs interessiert, konnte aber leider keinen Artikel oder Abschnitt in meiner Sprachreferenz zum Typenkonzept in Delphi finden. Auch die Suche nach Begriffen wie "unbenannter Typ", "anonymer Typ", "impliziter Typ", etc. war erfolglos.

Hast Du Literatur hierzu?

Robert Marquardt 11. Nov 2003 14:04

Re: Zeiger auf Zeiger
 
Ich stuetze mich hier auf mein Pasacal-Wissen von der Uni (lang ists her).
Delphi-Quellcode:
var
  a: ^Integer;
  b: ^Integer;
begin
  a := b;
end;
Diese Zuweisung ist nicht erlaubt, da die Typen beider Variablen unterschiedlich sind.
Am einfachsten laesst sich das erklaeren, wenn man annimmt das "^Integer" intern einen unbenannten eigenen Typ bekommt.

Etwas aehnliches gibt es bei "with". With kann man am Besten erklaeren indem man unbenannte Variablen annimmt.
Genau so implementiert der Compiler es ausserdem.

choose 11. Nov 2003 14:10

Re: Zeiger auf Zeiger
 
Deine Argumentation ist schlüssig: Weil Du einen (ich nenne ihn einmal so, wie ein ähnliches Konzept in Java) anonymen Typen erzeugst, der mit keinem anderen Typen (außer Pointer selbst) kompatibel ist, macht es keinen Sinn, weitere Pointer auf ihn zu platzieren, weil es nur eine Variable geben kann, die von seinem Typ ist.

Schade, dass ich hierzu nichts finde.

Robert Marquardt 11. Nov 2003 16:56

Re: Zeiger auf Zeiger
 
Das sollte eigentlich irgendwo beschrieben sein.

Die wirklich interessanten Sachen wie "tiefe Bindung" bekommt man wohl nur an der Uni erklaert.
Frag mich jetzt nicht was "tiefe Bindung" genau ist. Das hab ich vergessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 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