![]() |
Re: TTreeNode um eine weitere Variable erweitern
Es war ein Integer-Wert, ja. Dann ist das natürlich logisch^^
Ich konnte allerdings auch negative Werte einsetzen und auslesen, dabei dachte ich, dass ein Pointer auf eine Speicheradresse zeigt, die bei 0 startet *verwirrt*. So würde der Zeiger ja ins nichts bzw. negativen nicht vorhandenen Bereich zeigen. Wird dabei kein Fehler ausgelöst? |
Re: TTreeNode um eine weitere Variable erweitern
Moin, moin,
ja auch wenn es schon etwas her ist: Der Pointer hat ein anders Datenformat und das negaiv Bit wird als normales Zahlenbit genommen, was den höchsten positiv darstellbaren Wert erhöht. Also kein negaitver Speicher oder Paralleluniversum :-) Grüße // Martin |
Re: TTreeNode um eine weitere Variable erweitern
Ah, ok...Danke dir!
|
Re: TTreeNode um eine weitere Variable erweitern
So ich habe das hier einmal per Suche gefunden und es ist ja sogar noch fast Aktuell.
Ich möchte auch die Property Data benutzen und das sogar nur zum Speichern eines Integer Wertes. Nun habe ich das mit den Pointern bei Delphi alles noch nicht so hunertpro verstanden, dazu kommt das dauernde hin und her zwischen mehreren Sprachen. Nun gut, momentan habe ich es so:
Delphi-Quellcode:
Soll einmal nur ein kleiner Auszug sein.
var
test: integer; ShellTreeView1.Items.Item[3].Data:= Pointer(test); ShellTreeView1.Items.Item[3].Data:= nil; Ohne das am Ende auf nil zu setzen, scheint das nicht zu funktionieren, denn dann bekomme ich Fehler beim Beenden des Programms. jemand Ideen, wie ich es noch anders machen kann/ wie es ist, wenn test einen anderen Wert annehmen/ gelöscht werden würde. Gesagt sei noch, das ich in dem Treeview Dateien mit evntl einer Ordnerstruktur darstellen möchte. Diese werden dann durch eine id festgelegt, wodurch ich sie in einer Datei finden kann. Mir ist sehr wohl klar, das ich durch eine Ordnerstruktur die Dateien anders finden könnte, aber stellt euch Delphi oder irgendeinen Editor vor, der Listet auch nur alle Dateien auf. Ich wäre dennoch für alles andere offen *gg* |
Re: TTreeNode um eine weitere Variable erweitern
Es gibt eine aufwendige, dafür aber perfekte Lösung, um allgemein Werte in Data zu speichern:
Delphi-Quellcode:
Was ist denn so schlimm daran, beim Beenden des Programms Data auf nil zu setzen?
PIntRec = ^TIntRec;
TIntRec = record Value : Integer; end; [...] var DataPointer:PIntRec; [...] { -- Data mit Daten füllen -- } Node:=TV.Items.AddChild(Parent,String); New(DataPointer); DataPointer^.Value := Value; // z.B. dein Integer-Wert Node.Data := DataPointer; [...] { -- TreeNodes freigeben (z.B. bei OnClose -- } for i:=TV.Items.Count-1 downto 0 do begin Dispose(PIntRec(TV.Items.Item[i].Data)); TV.Items.Item[i].Data:=nil; // wird nicht benötigt (nach sakura) end; end; |
Re: TTreeNode um eine weitere Variable erweitern
Naja das ist ein sehr spezialler Fall und ein Record erstellen wird wohl nicht nötig sein.
generell hast du recht, das auf nil zu setzen ist wohl kein Problem, ich muss dies halt bei 20 werten oder so machen. Es geht mir auch mehr um eine gute und sichere Art dies zu machen. Also die zuweisung, bzw dann das lesen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr. |
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