Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi untypisierter pointer (https://www.delphipraxis.net/35254-untypisierter-pointer.html)

runger 8. Dez 2004 05:32

Re: untypisierter pointer
 
Hallo,

ein Pointer ist nichts anderes als eine Adresse und sonst garnichts!
Einem Pointer kann kein Mensch ansehen was an dieser Speicheradresse, auf die er zeigt steht!

Aus diesem Grund ist der Ausdruck typisierter Pointer absoluter Quatsch!

Rainer

Luckie 8. Dez 2004 05:38

Re: untypisierter pointer
 
Und ein typisierter Pointer beinhaltet für den Compiler noch die Information um was für einen Typ von Daten es sich hinter der Adresse handelt auf die der Zeiger zeigt.

runger 8. Dez 2004 06:57

Re: untypisierter pointer
 
Hallo Luckie,

das möcht ich sehen. Hast du ein Stück Code?
Oder gib mir ein Beispiel für einen "typisierten Pointer"

Rainer

fiasko 8. Dez 2004 07:06

Re: untypisierter pointer
 
Hallo,

Zitat:

Zitat von runger
das möcht ich sehen. Hast du ein Stück Code?
Oder gib mir ein Beispiel für einen "typisierten Pointer"

Ließt du eigentlich die Antworten eigentlich richtig durch :gruebel: Beispiel (grad kein Delphi zur Hand :arrow: Experimental-Code :-):

Delphi-Quellcode:
var
  tpoint: ^Int64;  // Das nennt man einen typisierten,
  utpoint: Pointer; // das einen untypisierten Pointer!

const
  a: array[0..6] of Int64 = (0,1,2,3,4,5,6);

begin
  tpoint = @a;
  utpoint = @a;

  inc(tpoint);
  inc(utpoint);

  // hier sollte tpoint^ den Wert 1 und
  // Int64(utpoint^) den Wert 0 liefern.
end

MrSpock 8. Dez 2004 07:07

Re: untypisierter pointer
 
Hallo runger,

Beispiele für typisierte Zeiger siehst du oben (z.B. im Beitrag von Muetze). Der Compiler prüft deshalb, ob bei einer Zuweisung an diesen Pointer auch der korrekte Typ verwendet wird, d.h. der Pointer zeigt immer auf Strukturen, die ihm vorher in der Definition bekannt gegeben wurde. Über den New Operator kann der Compiler auch feststellen, wieviel Speicherplatz er reservieren muss.

runger 8. Dez 2004 07:58

Re: untypisierter pointer
 
Hallo,

wenn ihr das so seht OK. Vergesst mein Geschwätz!

Danke
Rainer

MrSpock 8. Dez 2004 08:44

Re: untypisierter pointer
 
Irgendwie werde ich den Verdacht nicht los, dass du sauer bist, dass es typisierte Pointer in Pascal gibt. :mrgreen:

Zitat:

Vergesst mein Geschwätz!
... ääh wovon hattest du noch gesprochen?

Jan 13. Dez 2004 16:26

Re: untypisierter pointer
 
Also gerade wenn ein Problem mit diesen unsäglichen Pointern behoben ist kommt das nächste:

Ich habe folgenden code:


Delphi-Quellcode:
      temp:=tstringlist(listview1.selected.data);
      freeandnil(temp);
      if workarray[0]=nil then
        showmessage('bla');
temp ist vom typen tstringlist.
data ist ein pointer auf ein tstringlist element des arrays workarray.
workarray ist ein array vom typen tstringlist.
Wenn ich jetzt zur Laufzeit den ersten Eintrag im Listview löschen will, also den workarray[0] dann soll der zeiger Data vom selektierten Listitem auf temp gespeichert werden, und dann freigegeben werden. Leider klappt aber die Abfrage
Delphi-Quellcode:
if workarray[0]=nil
nicht. Allerding gibt ein Zugriff auf workarray[0] eine AV. Wie kann ich jetzt abfragen ob workarray[0] nun wirklich freigegeben wurde?
Gruß
Jan

Muetze1 13. Dez 2004 17:05

Re: untypisierter pointer
 
Moin!

Die AV kommt doch, weil er schon freigegeben wurde. Du musst nur noch das Array Element 0 löschen...

MfG
Muetze1

Jan 13. Dez 2004 18:22

Re: untypisierter pointer
 
Hallo Muetze1,
natürlich bekomm ich eine AV, muss ja auch, es geht mir aber darum, dass ich bei workarray[0]=nil kein true rausbekomme, obwohl das Element ja freigegeben wurde. Wie kann ich also abfragen ob der workarray[i] freigegeben wurde?
Gruß
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Seite 2 von 3     12 3      

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