| Autor |
Beitrag |
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mo 20.04.09 18:44
Hallo erstmal,
ich habe einen kleinen FTP Manager gecodet, und würde jetzt gerne eine Funktion einbauen die den Umgang erleichtern soll.
In einer ListBox lasse ich mit
Delphi-Quelltext 1:
| IdFTP.List(ListBox.Items); |
den Inhalt des aktuellen Verzeichnisses anzeigen.
Jetzt möchte ich das wenn der Benutzer ein Item wie eine Textdatei in der ListBox anklickt, und danach einen Button drückt, z.B. Löschen, das die Datei dann auch vom Server gelöscht wird.
Kann man das irgendwie machen,.... mit Itemdindex kann ich doch zumindest die Position herausfinden oder?
Achja gelöscht werden die Dateien wie folgt:
Delphi-Quelltext 1:
| IdFTP.RemoveDir(EditLoeschen.Text); |
Gruß Dude566
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 20.04.09 19:32
Müsste sowas in der Art sein.
Delphi-Quelltext 1:
| ListBox.Items.Delete(ListBox.Itemindex); |
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mo 20.04.09 21:13
Damit löscht man ja aber nur den Inhalt aus der Listbox oder täusche ich mich?
Es soll ja die Datei dann auch vom Server gelöscht werden.
Also so irgendwie:
Delphi-Quelltext 1:
| IdFTP.RemoveDir(ListBox.ItemIndex); |
???
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 20.04.09 21:44
Delphi-Quelltext 1:
| IdFTP.RemoveDir(ListBox.Items[ListBox.ItemIndex]); |
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Di 21.04.09 16:54
Das blöde ist nur, das in der ListBox nicht nur der Dateiname angezeigt wird sondern auch Datum und Rechte.
siehe Anhang
Wie kann ich machen das er nur den Namen bekommt, auf diese Weise ja scheinbar nicht.
Einloggen, um Attachments anzusehen!
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Di 21.04.09 17:12
Wenn du den Namen nicht nochmal in ner extra Liste gespeichert hast wirst du ihn wohl oder übel aus dem String rauspulen müssen.
Du solltest doch eigentlich wissen ob du die Liste nochmal extra hast. 
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Di 21.04.09 17:19
Ich habe ja keine extra Liste weil ich auch nicht weis wie ich den Dateinamen wie du sagst
"rauspulen" kann.
Einen Vorschlag?
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Di 21.04.09 17:28
Der einzige Doppelpunkt der in dem ganzen Ding vorkomt is der bei der Uhrzeit.
Mit Pos(':',s) findest du seine position im String. 4 dazu und du bist beim ersten Zeichen vom Dateinamen.
Rauskopieren kannst du ihn jetz mit Copy(s,Anfang,Länge), länge ist dabei length(s)-anfang.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Di 21.04.09 23:21
Klappt alles prima, vielen Dank!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.loeschenClick(Sender: TObject); var loeschdatei : string; position : integer; begin if idFTP1.Connected then begin loeschdatei := ListBox1.Items[ListBox1.ItemIndex]; position := Pos(':',loeschdatei)+4; loeschdatei := Copy(loeschdatei,position,Length(loeschdatei)-position+1); IdFTP1.Delete(loeschdatei); actdir; end else ShowMessage ('Es besteht keine Verbindung.'); end; |
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mi 22.04.09 09:51
Mehrere Angaben in einer Listbox? Ist das nicht ziemlich unübersichtlich? Ich würde die Dateien in einer ListView ausgeben lassen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| with ListView1.Items.Add do begin Caption := 'dateiname'; SubItems.Add('erstellungsdatum'); ... ImageIndex := 1; end; |
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mi 22.04.09 18:58
Ich weis aber nur wie ich den aktuellen Serverinhalt in einer ListBox anzeigen kann.
So wie du es geschrieben hast kann ich das ja nicht einfach übernehmen da ich ja keine Dateinamen bekomme.
Wenn dann müsste ich die ListBox auf invisible stellen, und nur die Dateinamen herauskopieren und im ListView anzeigen.
Oder wie denkst du darüber?
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mi 22.04.09 19:50
du kannst den Namen ja aus dem String den du in die Listbox packst rauspulen und dann im Listview anzeigen.
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mi 22.04.09 20:04
Naja, eleganter wäre es, die Daten vor dem zusammenschmeißen zu nehmen, denn ich glaub kaum dass die idFTP die nicht einzeln hat.
Dude566, zeig mal ein bisschen Eigeninitiative! Dein PC explodiert nicht, wenn du was falsch machst, auf jeden Fall solltest du dabei was lernen können. Du allein weißt wie dein Programm bisher aufgebaut ist. Wenn du gezeigt kriegst wie du einen Eintrag mit festem Text hinzufügst solltest du es doch schaffen da ne Schleife zu nehmen und die Einträge dynamisch zu füllen!
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mi 22.04.09 22:42
Ja ich suche ja auch schon nach einer Methode die Dateien einzeln zu erhalten, doch mit Google und der Delphi Hilfe habe ich bisher nichts gefunden.
Weis auch nicht wirklich genau nach was ich im einzelnen suchen muss.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mi 22.04.09 22:44
Nach einer Suche bei Google stößt man zum Beispiel hierauf:
www.delphipraxis.net...ist+directorylisting
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mi 22.04.09 22:55
Der Begriff "directorylisting" ist mir z.B. unbekannt, aber danke ich werde mich dort mal einlesen. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 23.04.09 18:48
Ich hab da nochmal ein Problem, ich weiß ja das ich den String nach einem "/" durchsuchen kann aber...
Ich habe einen Pfad wie diesen hier: /sachen/test/uploads/meins
Und ich möchte eine zurück Funktion einbauen also das letzte Verzeichnis von dem String abschnippeln. Wie finde ich denn da die Position heraus?
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 23.04.09 18:49
Das geht mit ExtractFilePath(ExcludeTrailingPathDelimiter(...)), da der letzte Teil dann als Dateiname interpretiert wird.
Am Ergebnis hängt mit ExtractFilePath nen / dran, wenn du das nicht willst, nimm ExtractFileDir.
// EDIT:
Nein, doch nicht, wegen den / statt \ als Trennzeichen, dann musst du es eben selbst machen: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var EndPos: Integer; begin EndPos := Length(APath); while (EndPos >= 1) and (AValue[EndPos] <> '/') do Dec(EndPos); ANewPath := Copy(APath, 1, EndPos); | So sollte in ANewPath der Oberordner mit / am Ende liegen.
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 23.04.09 18:56
Danke da wäre ich nie drauf gekommen, da fehlt mir noch das praktische Denken. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|