Hi,
leider kann ich das Programm nicht kompilieren, da mir einige Komponenten fehlen (Jedis, LMD, Abrevia).
Dennoch sind mir ein paar Sachen aufgefallen, die zwar das Problem nicht beheben, aber dem Code gutes tun:
Unit "MyFTPClient"
- Da ist die globale Variable "FTPClient", oben drüber ist ne Klasse TMFTP, da sollte der FTPClient als privates Feld rein.
- Warum leitest Du TMFTP von TForm ab? Brauchst Du doch gar nicht
- Methoden MPut: Einmal mit TStream und einmal mit FileName, der Code der Methoden ist fast identisch. Das könnte man drastisch reduzieren, wenn Du in der Methode MPut, die einen FileName als Source entgegen nimmt, einfach einen Stream auf die gegebene Datei öffnest und dann die andere MPut-Methode, die einen Stream als Source entgegen nimmt, aufrufst, dadurch sparst Du Dir etwas Code und es gibt nur eine Stelle, an der der Dateitransfer abläuft.
- Manche Methoden sind in Englisch, manche in Deutsch, das kann sehr verwirrend sein: Warum bleibst Du nicht bei einer Sprache?
- Du greifst von TMFTP (z.B. bei MConnection) direkt auf die Mainform zu, das ist nicht gut, dadurch bist Du immer abhängig davon: Übergebe die benötigten Daten als Parameter
- Wenn ich nicht ganz falsch liege, baust Du bei jeder Dateiübertragung (MPut) eine Verbindung auf und beendest sie wieder? Warum? Verbinde dich einmal, schiebe alle Dateien hoch und baue die Verbindung erst dann wieder ab, wenn entweder das Programm beendet wird, oder der Benutzer explizit auf einen "Disconnect" Knopf drückt. Das spart auch Übertragungszeit.
Das fiel mir beim ersten Drüberschauen auf.
Zum eigentlichen Problem werde ich mir gleich selbst mal eine kleine Anwendung schreiben, um zu überprüfen, ob es ein Problem in Deiner Anwendung ist, oder ob es generell ein Problem mit den
Indy-Dateien ist.
Ab welcher Größe ungefähr funktioniert der Upload nicht mehr?