Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pointer Verständnisproblem (https://www.delphipraxis.net/139454-pointer-verstaendnisproblem.html)

Teekeks 29. Aug 2009 08:52


Pointer Verständnisproblem
 
Hi!
Ich habe ein Pointer verständnissproblem...
Ich möchte einen Pointer auf ein TTreeNode zuweisen und das ganze später wieder auch zurück.
Delphi-Quellcode:
var tn:^TTreeNode;
    fTreeView:^TTreeView;
//...
            with fTreeView^.Items.AddChild(fTreeView^.Selected,sr.Name+'/') do
            begin
              tn:=@(fTreeView^.Selected);// hier sagt er "Incompatible type Got "Pointer", expected "TTreeNode""
              Selected:=true;
//              MakeVisible;
              scan(path+sr.Name+'/');
              fTreeView^.Selected:=@tn;
            end;
//...
Was mache ich falsch?

Gruß Teekeks

alzaimar 29. Aug 2009 09:02

Re: Pointer Verständnisproblem
 
Vergiss die Pointer. Klasseninstanzen sind doch schon Pointer. Außerdem: Was ist denn die Adresse einer Eigenschaft (@TreeView.Selected)?
Delphi-Quellcode:
var tn:TTreeNode;
    fTreeView:TTreeView;
//...
            with fTreeView.Items.AddChild(fTreeView.Selected,sr.Name+'/') do
            begin
              tn := fTreeView^.Selected;
              Selected := true;
//              MakeVisible;
              scan(path+sr.Name+'/');
              fTreeView.Selected := tn;
            end;
//...

Teekeks 29. Aug 2009 09:06

Re: Pointer Verständnisproblem
 
Ahh. Danke.

hoika 29. Aug 2009 09:50

Re: Pointer Verständnisproblem
 
Hallo,

um noch mal auf dein Problem zurückzukommen.
Ein Pointer ist eine Zeigervariable.
Sie hat 4 Byte (32Bit) und diese 4 Byte zeigen
auf die Adresse einer anderen Variable.

Aber:
Du hast das New() vergessen,
der Zeiger muss initialisiert werden.

#2 umgeht das und das ist gut so ;)
Delphi macht das ganze Zeiger-Gefummel für Klassen intern selber.


Heiko

Teekeks 29. Aug 2009 10:31

Re: Pointer Verständnisproblem
 
Ah. ok danke.


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