![]() |
doppelte Einträge verhindern beim öffnen mit OpenDialog
Hallo
Ich möchte gerne verhindern das wenn ich mit Opendialog Dateien öffne und in der ListBox eintragen lasse diese doppelt erscheinen folgendes hab ich bereits versucht finde aber den Fehler nicht :(
Delphi-Quellcode:
var i,j,k: Integer; slTmp:TStringList; begin slTmp := TStringList.Create; slTmp.Clear; try if OpenDialog2.Execute then begin for i := 0 to OpenDialog2.Files.Count - 1 do begin slTmp.Add(OpenDialog2.Files[i]); end;//for end;//if for j := 0 to slTmp.Count -1 do begin if slTmp.Strings[j] = lbAusgabe.Items.Strings[j] then begin slTmp.Delete(j); end; end;//for for k := 0 to slTmp.Count -1 do begin lbAusgabe.Items.Add(slTmp.Strings[k]); end;//for except end;//try end; Gruß Holger |
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
In einer FileListe eines OpenDialogs dürften eigentlich keinen doppelten Einträge sein.
|
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
nein ich meinte wenn in der ListBox schon die selbe Datei sein sollte wie die die ich öffnen möchte das soll verhindert werden also das 2. die gleiche Datei in der ListBox erscheint
|
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
Dann würde ich schon das Einbinden des Trings unterbinden:
Delphi-Quellcode:
for i := 0 to OpenDialog2.Files.Count - 1 do
begin if slTmp.IndexOf(OpenDialog2.Files[i]) <> 0 then slTmp.add( OpenDialog2.Files[i]); |
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
Oder so:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.AddButtonClick(Sender: TObject);
var i: Integer; begin with OpenDialog, ListBox do if Execute then begin Items.BeginUpdate; for i := 0 to Pred(Files.Count) do if Items.IndexOf(Files[i]) < 0 then Items.Add(Files[i]); Items.EndUpdate; end; end; |
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
DANKE !!!
|
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
Wobei hier die Variante mit dem IndexOf zu bevorzugen wäre, da diese bei vielen Dateien und vielen Einträgen in der Liste schneller arbeitet, als das jedesmal bei einer neuen Datei die ganze Liste mit einer For-Schleife durchlaufen werden muss.
|
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
Zitat:
|
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
Uups, mein Fehler!
Einfach ignorieren |
Re: doppelte Einträge verhindern beim öffnen mit OpenDialog
und wie sieht es aus wenn ich zb: ein ganzes Verzeichnis mit DirectoryListBox in die ListBox übernehme und dieses Verzeichnis 2 mal übernommen werden sollte (doppelt)?
Delphi-Quellcode:
procedure TfVerzeichnis.btnOKClick(Sender: TObject); var I: Integer; slTmp: TStringList; begin slTmp := TStringList.Create; slTmp.Clear; btnOK.Font.Color := clRed; btnOK.Caption := 'bitte warten...'; FindAllFiles(slTmp,DirectoryListBox1.Directory+'\','*.mp3', true, true, false); btnOK.Font.Color := clBlack; btnOK.Caption := 'OK'; for I := 0 to slTmp.Count - 1 do begin Form1.lbAusgabe.Items.Add(slTmp.Strings[i]); end; slTmp.Free; fVerzeichnis.Close; end; Gruß Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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