![]() |
Suche in TListView - Zugriffsverletzung?
Hallo,
ich verusuche in meinen Programm eine Suchfunktion für eine TListView einzubauen, die Dateien anzeigt. Das ganze soll so wie bei der Winamp Media-Library sein. Also das nur die Einträge angezeigt werden, die das gesuchte Wort beinhalten. Aber ich erhalte immer eine Zugriffsverletzung Hier der Code:
Delphi-Quellcode:
ich habe mir einen klienen Teil des Codes
procedure TMainForm.Search_edtChange(Sender: TObject);
var i: integer; FOUND: Boolean; begin if Seach_edt.Text <> '' then begin for i := 0 to FileList.Items.Count -1 do begin FOUND := AnsiCompareText(FileList.Items[i].Caption, Search_edt.Text) = 0; if not FOUND then FileList.Items[i].Delete; end; end; end; ![]() Weiss jemand rat? Robin |
Re: Suche in TListView - Zugriffsverletzung?
lass deine schleife andersherum laufen und es sollte funktionieren. Dadurch das du Einträge raus löschst greifst du am ende der Schleife auf Items zu die gar nicht mehr existieren.
|
Re: Suche in TListView - Zugriffsverletzung?
Jetzt kommt kein Fehler mehr - aber passieren tut auch nix :gruebel:
|
Re: Suche in TListView - Zugriffsverletzung?
|
Re: Suche in TListView - Zugriffsverletzung?
Irgendwie bin ich zu inkompetent :lol:
Habs mal mit einer Repeat-Schleife probiert. Das Ergebniss: Zugriffsverletzung :evil: :evil:
Delphi-Quellcode:
i := 0;
repeat if UpperCase(FileList.Items[i].Caption) <> UpperCase(Search_Word) then FileList.Items.Delete(i); i := i+1; until i = FileList.Items.Count -1; |
Re: Suche in TListView - Zugriffsverletzung?
SirThornberry hat dir doch schon erklärt, warum die Schleife rückwärts laufen muß.
Mit der Funktion AnsiCompareText vergleichst du immer vollständige Einträge. Deshalb mein Verweis auf die Funktion AnsiContainsText. Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz