Einzelnen Beitrag anzeigen

verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#1

Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 30. Mär 2018, 17:20
Hallo,
ich habe ein Stringgrid indem 2600 Bohrpunkte mit zugehörigen Koordinaten gespeichert sind und ich habe ein Listview in dem Dateinamen von Protokollen und als
1.Subitem der Bohrpunkt gespeichert ist.
Ich vergleiche jetzt per Schleife jede Stringgridreihe mit allen Listviewreihen, ob es einen Listvieweintrag mit gleichem Bohrpunkt gibt.Das sind also 2600 mal 2600
Vergleiche, das ist natürlich extrem langsam. Hat jemand eine andere Idee.

Delphi-Quellcode:
function FindListViewItem(lv: TListView; const S: string; column: Integer): TListItem;
var
i: Integer;
found: Boolean;
begin
Assert(Assigned(lv));
Assert((lv.viewstyle = vsReport) or (column = 0));
Assert(S <> '');
for i := 0 to lv.Items.Count - 1 do
begin
Result := lv.Items[i];
if column = 0 then
found := AnsiCompareText(Result.Caption, S) = 0
else if column > 0 then
found := AnsiCompareText(Result.SubItems[column - 1], S) = 0
else
found := False;
if found then
Exit;
end;
Result := nil;
end;

procedure TForm1.ToolButton23Click(Sender: TObject);
var
lvItem: TListItem;
begin
for I := stringgrid2.RowCount-1 downto 1 do
begin
lvItem := FindListViewItem(ListView1, stringgrid2.Cells[0,i], 1);
if lvItem <> nil then
begin
{mach was}
end;
end;
end;

Geändert von mkinzler (30. Mär 2018 um 17:57 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat