FTP-Funktion verbessern (wenn möglich)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • FTP-Funktion verbessern (wenn möglich)

      Hallo,
      ich experimentiere gerade mit dem FTP(...)-Befehl rum. Da ist mir aufgefallen, dass es 1. ziemlich umständlich ist eine Dateiliste zu bekommen und 2. beim Up-/Download kein Fortschritt angezeigt werden kann, bzw. das Programm bis zum Ende der Übertragung stillsteht.
      2. ist verschmerzbar, aber 1. nervt schon ziemlich. Wenn ich mich mit meiner Cloud verbinde bekomme ich per FTP("ListDir") in etwa folgendes Ergebnis:

      Spoiler anzeigen

      -rwxrw-rw- 1 jacdelad users 13085566 Jul 10 10:59 Dangaa - Altai.mp3
      -rwxrw-rw- 1 jacdelad users 6187916 Jul 10 10:59 Dangaa - Flight of the Eagle.mp3
      -rwxrw-rw- 1 jacdelad users 17089420 Jul 10 10:59 Dangaa - Grassland and Breeze.mp3
      -rwxrw-rw- 1 jacdelad users 9827222 Jul 10 11:00 Dangaa - Longing for the Endless Planes.mp3
      -rwxrw-rw- 1 jacdelad users 15203206 Jul 10 11:00 Dangaa - Mongolian Mood.mp3
      -rwxrw-rw- 1 jacdelad users 10367876 Jul 10 11:01 Dangaa - Native Calls.mp3
      -rwxrw-rw- 1 jacdelad users 8913806 Jul 10 11:02 Dangaa - Saga of Dschingis Khan.mp3
      -rwxrw-rw- 1 jacdelad users 9462675 Jul 10 11:02 Dangaa - Shepherd At a Mountain Lake.mp3
      -rwxrw-rw- 1 jacdelad users 8055694 Jul 10 11:03 Dangaa - Thoat Singer's Parade.mp3
      -rwxrw-rw- 1 jacdelad users 9411468 Jul 10 11:03 Dangaa - Voices of Springtime.mp3
      -rwxrw-rw- 1 jacdelad users 8235916 Jul 10 11:03 Dangaa - Witches and Shamanes.mp3
      drwxrwxrwx 2 jacdelad users 4096 Jul 12 11:00 Test


      Ich weiß nicht, ob das an meiner Cloud liegt oder generell so ist, aber es wäre gut, wenn das einfacher ginge. Am besten nicht die Ausgabe in eine Datei, sondern vielleicht in die Listboxliste oder so. Und geordneter, es ist schwer hier die relevanten Daten zu filtern.
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • FTP("List",...) liefert exakt das, was der Server liefert. Leider ist das Format nicht einheitlich oder genormt, so dass ich am Ergebnis der Funktion nicht herumdoktern möchte.
      Was die Ablage des Ergebnisses in der Listboxliste betrifft, schaue ich mir das mal an.

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • Ein anderer Ordner auf dem selben Server gibt das aus:
      Spoiler anzeigen

      -rwxrw-rw- 1 jacdelad users 6887268 Dec 2 2016 1-01 Rubbles.ogg
      -rwxrw-rw- 1 jacdelad users 6877378 Dec 2 2016 1-02 Magpie Eggs.ogg
      -rwxrw-rw- 1 jacdelad users 5572234 Dec 2 2016 1-03 Ardennes.ogg
      -rwxrw-rw- 1 jacdelad users 5714149 Dec 2 2016 1-04 A Sense Of Grey.ogg
      -rwxrw-rw- 1 jacdelad users 6432649 Dec 2 2016 1-05 Smoke.ogg
      -rwxrw-rw- 1 jacdelad users 8526437 Dec 2 2016 1-06 Poetry.ogg
      -rwxrw-rw- 1 jacdelad users 6450324 Dec 2 2016 1-07 Stuck In The Waltz.ogg
      -rwxrw-rw- 1 jacdelad users 8774049 Dec 2 2016 1-08 7!.ogg
      -rwxrw-rw- 1 jacdelad users 4181844 Dec 2 2016 1-09 Krokstav-emne.ogg


      Bisher hab ich mich am ":" orientiert um die Dateinamen zu bekommen, aber so... :-(
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • Hallo Jac!

      Ich weiß zwar, Du suchst eine allgemeine Lösung, aber Vorschlag: Einstweilen könnte man sich vielleicht wie nachstehend behelfen (- in der Hoffnung, daß es eine endliche Menge an OS-Ausgabeformaten gibt und man diese jeweils irgendwie erkennen kann):

      Quellcode

      1. cls:declare T$[]:T$[]=explode("\
      2. -rwxrw-rw- 1 jacdelad users 6887268 Dec 2 2016 1-01 Rubbles.ogg\n\
      3. -rwxrw-rw- 1 jacdelad users 6877378 Dec 2 2016 1-02 Magpie Eggs.ogg\n\
      4. -rwxrw-rw- 1 jacdelad users 5572234 Dec 2 2016 1-03 Ardennes.ogg\n\
      5. -rwxrw-rw- 1 jacdelad users 5714149 Dec 2 2016 1-04 A Sense Of Grey.ogg\n\
      6. -rwxrw-rw- 1 jacdelad users 6432649 Dec 2 2016 1-05 Smoke.ogg\n\
      7. -rwxrw-rw- 1 jacdelad users 8526437 Dec 2 2016 1-06 Poetry.ogg\n\
      8. -rwxrw-rw- 1 jacdelad users 6450324 Dec 2 2016 1-07 Stuck In The Waltz.ogg\n\
      9. -rwxrw-rw- 1 jacdelad users 8774049 Dec 2 2016 1-08 7!.ogg\n\
      10. -rwxrw-rw- 1 jacdelad users 4181844 Dec 2 2016 1-09 Krokstav-emne.ogg","\n")
      11. declare n&,v&,va&
      12. v&=0
      13. weitersuchen:
      14. va&=v&:v&=instr(" ",T$[0],va&+1)':print v&
      15. inc n&:case n&<8:goto "weitersuchen"
      16. if mid$(T$[0],1,2)="-r"
      17. print "\nReading in .NIX-OS filenames:\n"
      18. whileloop 0,sizeof(T$[])-1
      19. Print "*";mid$(T$[&Loop],v&+1,Len(T$[&Loop])-v&);"*"
      20. endwhile
      21. else
      22. print "\n Anderes OS, andere Methode nötig!\n"
      23. endif
      24. Waitinput
      Alles anzeigen
      Gruss

      P.S.: Könnte dann auch ein Fall für RegEx-Match sein ...
    • Hallo,
      danke für den Code. Ich hab schon eine Methode zum Aufschlüsseln der Dateinamen, die so lange funktioniert, wie eins der beider Schemata verwendet wird. Deine sieht aber auch sehr interessant aus, den Code gehe ich gerade durch.
      Ich wunder mich nur, dass es so kompliziert gemacht wird. Normale FTP-Programme kommen mit jedem Server zurecht, das kann eigentlich nicht so schwer sein. @Roland: Bitte nicht als böse Kritik an XProfan sehen.

      Das ist meine aktuelle Methode (funktioniert mit beiden Schemata):

      Quellcode

      1. declare p$[],d$,s$
      2. cls
      3. p$[]=Explode("-rwxrw-rw- 1 jacdelad users 6887268 Dec 2 2016 1-01 Rubbles.ogg\n-rwxrw-rw- 1 jacdelad users 6877378 Dec 2 2016 1-02 Magpie Eggs.ogg\n-rwxrw-rw- 1 jacdelad users 5572234 Dec 2 2016 1-03 Ardennes.ogg\n-rwxrw-rw- 1 jacdelad users 5714149 Dec 2 2016 1-04 A Sense Of Grey.ogg\n-rwxrw-rw- 1 jacdelad users 6432649 Dec 2 2016 1-05 Smoke.ogg\n-rwxrw-rw- 1 jacdelad users 8526437 Dec 2 2016 1-06 Poetry.ogg\n-rwxrw-rw- 1 jacdelad users 6450324 Dec 2 2016 1-07 Stuck In The Waltz.ogg\n-rwxrw-rw- 1 jacdelad users 8774049 Dec 2 2016 1-08 7!.ogg\n-rwxrw-rw- 1 jacdelad users 4181844 Dec 2 2016 1-09 Krokstav-emne.ogg","\n")
      4. whileloop 0,SizeOf(p$[])-1
      5. if InStr(":",p$[&Loop])
      6. d$=Del$(SubStr$(p$[&Loop],2,":"),1,3)
      7. else
      8. d$=Trim$(Right$(p$[&Loop],Len(p$[&Loop])-InStr("users",p$[&Loop])-5))
      9. whileloop 4
      10. d$=Trim$(Del$(d$,1,InStr(" ",d$)))
      11. endwhile
      12. endif
      13. Print "*"+d$
      14. endwhile
      15. waitinput
      16. end
      Alles anzeigen
      ...ist aber eben nicht wirklich effektiv.
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jac de Lad ()

    • Ich habe mir mal die FTP-Unit näher angesehen und etwas gegoogelt: Ich denke für das Problem mit "ListDir" habe ich eine Lösung gefunden, die nur eine Liste der reinen Dateinamen zurückgibt. Es wird vermutlich aber weiter bei einer Datei bleiben, die erzeugt wird. aber mit Move("FileToList" sollte es ja kein Problem sein.

      Aber ich forsche noch etwas weiter ...

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • Wow, danke Roland. Wäre gut wenn beide Möglichkeiten drin wären. Momentan nutze ich die "Langversion", weil ich Probleme FTP("GetFileSize" habe. So kriege ich alles auf einmal. Das funktioniert aber eben nur so lange wie ich auf meinem eigenen Server bleibe. Vielleicht wäre es möglich eine Funktion oder mehrere für die Eigenschaften zu mache. Zum Beispiel ob ein Eintrag eine Datei oder ein Ordner ist. Und das Datum. Wie gesagt, wenn möglich. Wenn es eine DLL gibt nehme ich die auch.
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • Ja, es werden natürlich beide Möglichkeiten drin sein. Zum einen aus Kompatibilitätsgründen und zum anderen können in vielen Fällen auch die weitergehenden Infos (zu Flags, Rechten, Zeiten, etc.) wichtig sein:

      FTP("ListDir", Datei$[, Modus])

      Ist Modus nicht angegeben oder 0, gibt es die bisherige Form, ist der Modus <> 0 gibt es die Kurzfassung!

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RGH ()

    • Seufz,
      im Moment kotze ich wegen der ganzen FTP-Geschichte ab. Mein mittelmäßig komplexes Programm läuft in 80% der Fälle normal, aber ansonsten häufen sich die Fehler. Mal geht SetDir nicht, mal besteht zwar eine Verbindung, aber trotzdem geht nix. Leider kann ich kaum heruasfinden, ob es an mir oder an XProfan liegt. :cry:
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • ...allerdings rühren alle bisher in meinem Programm aufgetretenen von nicht erfolgreich durchgeführten SetDir-Befehlen her. Beim nächsten Start erfolgt genau der gleiche Ablauf mit den gleichen Ordnern und es geht...
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • Frage mal nach den Befehlen den FTP-Status ab : $FTPSTATUS und %FTPTATUS!
      Vielleicht gibt das Aufschluss und gibt dir Hinweise, den Befehl zu wiederholen, wenn er beim ersten Mal nicht funktionierte.

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • Hm, das hat erstmal weitergeholfen: Es wird manchmal versucht Ordner auf dem FTP-Server zu öffnen, die gar nicht existieren. Dabei werden die geforderten Ordnernamen aus dem richtigen Ordner plus einem weiteren, der schon abgearbeitet ist, konstruiert. Das kanna ber eigentlich nicht passieren. Laut der Hilfe ist die Rekursionstiefe auch bei mindestens einigen Tausend, sodass das nicht das Problem sein sollte.
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • ...und weiter geforscht:

      1. Es ist immer wieder vorgekommen, dass in meiner Liste Dateien aus anderen Ordnern in Ordnern auftauchten wo sie nicht drin sind. Nach langem Suchen und etliche Breakpoints habe ich festegestellt, dass das Problem wie im Folgenden ist. Ablauf der Unterprozedur:
      - Ordner wird aufgelistet
      - Textdatei wird in Liste eingelesen, die lokal in der Proc definiert ist
      - Liste wird nacheinander ausgwertet, wenn das Item ein Ordner ist wird die Funktion rekursiv aufgerufen

      Zum Zeitpunkt des rekursiv Aufrufens ist die Textdatei schon gelöscht und außerdem erzeugt sie eine neue Liste (Create("List"...). Während die TExtdatei eingelesen wird lasse ich jedes Item loggen. Nachdem die Textdatei in die Liste eingelesen wurde lasse ich die Anzahl der Items zurückgeben. Und da kamen auf einmal Probleme auf: Es wurde nur ein Item geloggt (was korrekt ist), in der Liste waren dann aber z.B. 34. Also habe ich vor dem Einlesen noch ein Clearlist eingefügt und siehe da, seitdem keine Probleme mehr.
      Nachtrag: Ein weiterer Versuch hat gezeigt, dass die Liste manchmal schon gefüllt ist, obwohl sie genau eine Programmzeile weiter oben erst erstellt worden ist. Das muss aber wirklich an XProfan liegen und nicht an mir.


      2. Das löst aber noch nicht das SetDir-Problem. Folgende Fehlermeldung ($FTPStatus) kann kommen, wenn ein Ordner geöffnet werden soll, es aber fehlschlägt:
      "150 Opening BINARY mode data connection for file list"
      Bei Erfolg kommt immer "250 CWD command successful".
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jac de Lad ()

    • Das müßtest du mal genauer erklären.
      Also, eine Liste wird gefüllt mit den Dateinamen in den
      Ordnern bzw. Unterordnern. Welche Textdatei liest du
      dann ein ? Sind das die Dateien, die in der Liste sind,
      und die wiederum Text enthalten oder schreibst du
      die Liste der Dateien in eine Textdatei ?

      Außerdem würde ich das Create("List",...) nur einmal
      am Anfang des Programms machen und nicht dauernd
      in der Rekursion. Da reicht ja ein ClearList Handle, wenn
      die Liste abgearbeitet ist und geleert werden kann.
      Damit hast du dann auch nur ein einziges Handle.
      Die vielen Handles könnten ja auch eine Fehlerquelle
      darstellen.

      Vielleicht kann man da auch optimieren, wenn man die
      interne Listboxliste dazu nimmt. z.B. beim Einlesen der
      Textdatei reicht dann einfach ein Move("FileToList", Dateiname$)
      und der Inhalt steht in der int. Listboxliste. Diese Einlese-Schleife
      könnte man sich schon sparen. Und das Hin- und Herschieben
      in Listen jeglicher Art ist ja mit den anderen Movefunktionen
      ein Kinderspiel.

      Natürlich muß das Löschen (ClearList) der Listen genau überlegt sein.
    • Die Funktion FTP("ListDir" scheint die Liste immer in Eibe Datei. Die Datei lese ich vollständig ein und arbeite sie ab. Wenn ein Ordner kommt ruft sich die Funktion selbst auf. Erst wenn der Ordner, und alle Unterordner abgearbeitet sind erfolgt ein Sprung zurück und es geht weiter. Wenn ich da nur ein Handle definiere geht gar nichts mehr.
      XProfan-Profi (XProfan X4+XPIA) :thumbsup:
      Core i5 2550K/16GB RAM/Radeon HD7770 OC/Creative X-Fi XTreme Music/60TB HDD
      http://jacdelad.bplaced.net
      XBox Classic/360S/One/One S/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Android 8.0
    • Mit FTP habe ich mich noch nicht intensiv befaßt. Höchstens mal
      ein paar Dateien runtergeladen bzw. hochgeladen. Wir scheinen
      aber den gleichen Webspace zu nutzen (bplaced.net).

      Ich hab dort auch ein paar Dateien. Wie erkenne ich denn jetzt
      irgendwelche Unterordner ?
      Hab jetzt das hier in meiner Datei :
      Spoiler anzeigen

      drwx------ 6 330 330 2048 Feb 27 2016 .
      drwx------ 6 330 330 2048 Feb 27 2016 ..
      -rw------- 1 330 330 11 Aug 13 06:07 .ftpquota
      drwxr-xr-x 2 330 330 2048 Jul 31 13:12 Files
      drwx------ 2 330 330 2048 Feb 27 2016 MySQLadmin
      drwx------ 2 330 330 2048 Feb 27 2016 PgSQLadmin
      drwx------ 2 330 330 2048 Feb 27 2016 live Access


      Gut, hier weiß ich halt, daß meine Dateien im Ordner Files liegen.
      Da müßte ich mich mal damit befassen.
    • Siehst Du an den Attributen, die Dir sagen, was Du mit dem Objekt machen kannst:
      d Directory
      r Read
      w Write
      x Execute
      Ein Verzeichnis muß ausführbar sein, sonst hast Du keine Zugriffsrechte
      Die Attribute rwx tauchen 3 mal auf. Das erste mal für den Eigentümer, das zweite mal für die Benutzergruppe und das dritte mal für den Rest der Welt.

      Gruß Volkmar