Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TreeView1.Selected.Data und Typenkonvertierungsfehler (https://www.delphipraxis.net/64999-treeview1-selected-data-und-typenkonvertierungsfehler.html)

ozz 10. Mär 2006 22:14


TreeView1.Selected.Data und Typenkonvertierungsfehler
 
Guten Zusammen.
irgendwie habe ich immer Probleme mit Typenkonvertierungen :twisted:. Bei den Beispiel bekomme ich immer die Meldung:
Inkompatible Typen TCLCategory und Char.
Irgendwie ist da aber kein Char Typ. TCLCategory ist ein Record nur aus Integern. Und laut Doku ist Data vom Typ Pointer. Das Hinzufügen funktioniert auch. Nur bei Auslesen bekomme ich obigen Fehler.

Danke für die Tips.

Delphi-Quellcode:
procedure TForm1.ActionShowCategoryDetailsExecute(Sender: TObject);
var CLCategory:TCLCategory;
begin
CLCategory:=^TCLCategory(TreeView1.Selected.Data)^;
end;

Muetze1 10. Mär 2006 22:19

Re: TreeView1.Selected.Data und Typenkonvertierungsfehler
 
Delphi-Quellcode:
Type
  PCLCategory = ^TCLCategory;
  TCLCategory = ...;

....

procedure TForm1.ActionShowCategoryDetailsExecute(Sender: TObject);
var
  CLCategory: TCLCategory;
begin
  If Assigned(TreeView1.Selected) Then // safety first...
  Begin
    CLCategory := PCLCategory(TreeView1.Selected.Data)^;

    ...
  End;
end;

DGL-luke 10. Mär 2006 22:20

Re: TreeView1.Selected.Data und Typenkonvertierungsfehler
 
hmm... also ich würde ja das so machen:

Delphi-Quellcode:
CLCategory := TCLCategory(TreeView1.Selected.Data^);
evtl. sogar

Delphi-Quellcode:
CLCategory := TCLCategory(Pointer(TreeView1.Selected.Data)^);
gute nacht...

PS: hmpf... wieder einer schneller.. wenigstens geth der rote kasten.
PPS: und noch einer?! ach so, editiert...

ozz 11. Mär 2006 06:53

Re: TreeView1.Selected.Data und Typenkonvertierungsfehler
 
Danke DGL-lukeund Muetze1. :bouncing4:

@Muetze1:
In Prinzip habe ich doch das Gleiche gemacht.Der einzige Unterschied ist doch, das du noch eine Typ für den typisierten Pointer von TCLCategory als PCLCategory definiert hast.

Muetze1 11. Mär 2006 12:28

Re: TreeView1.Selected.Data und Typenkonvertierungsfehler
 
Ja, aber einen Zeiger auf einen Typen zu deklarieren um ihn dahinter gleich wieder zu dereferenzieren - heikle Sache. Da kann es sehr gut sein, das da Delphi nicht mitspielt bzw. es falsch parst.

ozz 12. Mär 2006 07:13

Re: TreeView1.Selected.Data und Typenkonvertierungsfehler
 
Guten Morgen Muetze1.
Das war genau das Problem. Jetzt funzt es. Danke für die Erläuterungen.


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