Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VirtualStringTree Einträge vergleichen (https://www.delphipraxis.net/204191-virtualstringtree-eintraege-vergleichen.html)

Zodi 4. Mai 2020 22:06

VirtualStringTree Einträge vergleichen
 
Hi Delphianer

Ich bekomme einen String mit Datensätzen der in eine Stringliste gesetzt wird.
Danach Vergleiche ich die Einträge der StringListe mit der Listview.
Ist in der ListView dann ein Eintrag der nicht in der StringListe ist so wird dieser dann gelöscht.

Delphi-Quellcode:
    for i := Listview1.Items.Count -1 downto 0 do begin

    P := StringList.IndexOf(Listview1.Items[i].Caption);

    if p = -1 then Listview1.Items[i].StateIndex := 2;

    if Listview1.Items[i].StateIndex = 2 then begin
    Listview1.Items[i].Delete;
   
    end;
Dieser Code hat so mit meiner ListView super funktioniert.
Jetzt versuche ich mich seit ein paar Tagen an der VirtualStringTree Komponente.
Und vsersuche genau diesen Code Teil umzuschreiben das er mit der VirtualStringTree auch kunktioniert.
Aber ich finde in der VirtualStringTree weder .Stateindex noch .items.

Kann mich da jemand auf die richtige Spur bringen.

grüsse Zodi

DieDolly 4. Mai 2020 22:17

AW: VirtualStringTree Einträge vergleichen
 
Zitat:

Aber ich finde in der VirtualStringTree weder .Stateindex noch .items.
Ist doch klar. Die Komponente heißt Virtual String Tree. Die Daten werden nicht direkt in die Komponente gespeichert sondern außerhalb in einer extra dafür angelegten Datenstruktur.

Zodi 4. Mai 2020 22:29

AW: VirtualStringTree Einträge vergleichen
 
Also müsste ich das hier suchen?

Delphi-Quellcode:
type
  PTreeData = ^TTreeData;
  TTreeData = record
    Column0: String;
    Column1: String;
    Column2: String;
    Column3: String;
    Column4: String;
    Column5: String;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Data: PTreeData;
begin

end;
Also in der DATA variablen?

himitsu 5. Mai 2020 00:36

AW: VirtualStringTree Einträge vergleichen
 
ja ..............

Hobbycoder 5. Mai 2020 06:35

AW: VirtualStringTree Einträge vergleichen
 
Zitat:

Zitat von Zodi (Beitrag 1463670)
Delphi-Quellcode:
    for i := Listview1.Items.Count -1 downto 0 do begin

    P := StringList.IndexOf(Listview1.Items[i].Caption);

    if p = -1 then Listview1.Items[i].StateIndex := 2;

    if Listview1.Items[i].StateIndex = 2 then begin
    Listview1.Items[i].Delete;
   
    end;

Du könntest sowas etwas optimieren:
Delphi-Quellcode:
  for i := Listview1.Items.Count-1 downto 0 do
  begin
    if StringList.IndexOf(Listview1.Items[i].Caption) = -1 then
      ListView1.Items[i].Delete;
  end;
Wenn eine Variable eh nur an 1 Stelle benutzt wird, kann man sie sich auch sparen. Zumal ich annehmen, dass der Compiler zur Optimierung das eh so macht.

Ich finde sowas macht den Code übersichtlicher. Vor allem wenn die Var-Abschnitte nicht mit überflüssigen Variablen voll sind.

DieDolly 5. Mai 2020 12:12

AW: VirtualStringTree Einträge vergleichen
 
Zitat:

Du könntest sowas etwas optimieren:
Da er eine virtuelle Liste nutzt ist das keine Optimierung und macht nichts besser.

Hobbycoder 5. Mai 2020 12:35

AW: VirtualStringTree Einträge vergleichen
 
Zitat:

Zitat von DieDolly (Beitrag 1463706)
Zitat:

Du könntest sowas etwas optimieren:
Da er eine virtuelle Liste nutzt ist das keine Optimierung und macht nichts besser.

Hatte den Text nach seinem Beispiel im ersten Thread gar nicht so richtig gelesen ;-)

Mir ging's nur darum, dass man keine Variable mit einem Inhalt laden brauche, wenn ihr einziger Zwecke die Prüfung des Inhalts ist.


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