Dateien mit Mehrfachauswahl löschen
-
Habe mir einen kleinen FTP-Client geschrieben mit INDY-Komponente (idFTP).
Jetzt möchte ich mehere Dateien gleichzeitig entfernen.
Aber leider komme ich nicht weiter. Kann mir jemand helfen...TStringList *sl = new TStringList; for(int s=0; s < ListBox1->SelCount; s++) { sl->Add(ListBox1->Items->Strings[s]); FTP1->Delete(ExtractFileName(sl->Text)); } delete sl;
-
Du hast hier ein grundsätzliches logisches Problem. Geh Deinen Programmteil hier mal Schritt für Schritt durch und prüfe, ob das alles so seine Richtigkeit hat. Vor allem prüfe mal ob TListBox::SelCount in Deiner Schleife so wiklich Sinn macht.
-
TListBox::SelCount gibt dir die Anzahl der ausgewählten Einträge zurück,
nicht aber die Indizes der Einträge.Also musst du die Einträge der Listbox einzeln durchgehen und auf "Selected" prüfen.
Dann kannst du mit TIdFTP::Delete die angegebene Datei löschen.
-
Ich glaube das mit dem SelCount ist nicht so gut.
Ich habe jetzt folgendes versucht, aber da komme ich nicht weiter.
Bei der Upload der Daten funktioniert alles prima auch die Mehrfachübertragung.void __fastcall TfrmStart::ListBox1Click(TObject *Sender) { TStringList *sl = new TStringList; String Datei =ListBox1->Items->Strings[ListBox1->ItemIndex]; sl->Add(Datei); delete sl; }
-
Warum nimmst du immer eine Stringliste?
Gehe doch in einer Schleife alle Einträge der Listbox durch,
und wenn der Eintrag markiert ist, dann ermittelst du die Bezeichnung des Eintrags und diesen übergibst du dann an die Delete-Funktion.Ungetestet, aber müsste so funktionieren
for(int i=0; i<ListBox1->Items->Count; i++) { if(ListBox1->Selected[i]) { FTP1->Delete(ExtractFileName(ListBox1->Items->Strings[i])); } }
-
Danke, für die Hilfe. Hier seit einfach klasse!!!
-
Das Beispiel mit Selected steht übrigens fast genau so in der Hilfe