Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Probleme mit FTP-Get mit Indy FTP-Komponente nach Umstieg auf Delphi XE 11 (https://www.delphipraxis.net/214384-probleme-mit-ftp-get-mit-indy-ftp-komponente-nach-umstieg-auf-delphi-xe-11-a.html)

UweJansen 5. Jan 2024 10:13

Delphi-Version: 11 Alexandria

Probleme mit FTP-Get mit Indy FTP-Komponente nach Umstieg auf Delphi XE 11
 
Hallo,

ich habe bisher noch nicht so viel mit Delphi gemacht was sich aber in der nächsten Zeit ändern soll / wird.

Aktuell haben wir erst einmal den Umstieg von DXE10.4 auf DXE11 vollzogen und damit unsere diversen mit Delphi entwickelten DLL's
auch auf DXE11 umgestellt.

In einer dieser DLL's habe ich nun ein Problem.
Darin ist eine FTP-Funktion eingebaut die von einem externen Programm aufgerufen wird und in dieser FTP-Funktion wird ein GET einer
Datei von einem internen eigenen FTP-Server gemacht. Dieser GET läuft nach der Kompilierung mit DXE11 in einen TimeOut.
Nun habe ich irgendwo gelesen, dass es hier wohl zwischen DXE10.4 und DXE11 eine Umstellung in den Indy-Komponenten gegeben hat die
dieses Problem wohl verursachen könnte. Da dies allerdings nicht so ganz meine Kernkompetenz ist hoffe ich auf eure Hilfe.

Hier mal der Code-Schnipsel:

Delphi-Quellcode:
try
      if idFTP1.Connected = TRUE then idFTP1.Disconnect();
        idFTP1.Host           := Trim(String(ServName)) ;
        idFTP1.Port           := 21    ;
        idFTP1.UserName       := Trim(String(UserName)) ;
        idFTP1.Password       := Trim(String(Password)) ;
        idFTP1.ConnectTimeOut := 60000 ; // = 60 Sekunden
        idFTP1.ReadTimeOut    := 720000; // = 720 Sekunden
        idFTP1.TransferTimeOut := 720000; // = 720 Sekunden
        idFTP1.Connect();
        if idFTP1.Connected = TRUE then
        begin
          ShowTfrmShFTP;
          idFTP1.TransferType := ftASCII;
          intFSize           := idFtp1.Size(Trim(String(UnxFName)));
          showmessage ('Point 1');
          idFTP1.Get(Trim(String(UnxFName)), Trim(String(LocDName)) + '/' +
                     Trim(String(LocFName)), TRUE, TRUE);
          idFTP1.Disconnect();
          Result := 1;
        end;
    except
      on E: exception do
      begin
        MessageDlg('Fehler bei Übertragung der Datei: ' + #13#10 +
                    #13#10 + E.Message, mtInformation, [mbOk], 0);
        Result := intResult;
      end;
    end;
Beim "idFTP1.Get" bleibt das Ganze dann hängen und läuft nach dem eingestellten TimeOut in den Exception-Block !
Kompiliert mit DXE10.4 funktioniert das Ganze noch ohne Probleme.

Grüße Uwe

jaenicke 5. Jan 2024 12:24

AW: Probleme mit FTP-Get mit Indy FTP-Komponente nach Umstieg auf Delphi XE 11
 
Was ist denn die Fehlermeldung?

UweJansen 5. Jan 2024 12:35

AW: Probleme mit FTP-Get mit Indy FTP-Komponente nach Umstieg auf Delphi XE 11
 
Hi,

die Fehlermeldung die da kommt ist schlichtweg

"Fehler bei der Übertragung der Datei"
"Timeout"

Die Fehlermeldung kommt nach den eingestellten 720 Sekunden ReadTimeOut !

Grüße
Uwe

jaenicke 5. Jan 2024 12:57

AW: Probleme mit FTP-Get mit Indy FTP-Komponente nach Umstieg auf Delphi XE 11
 
Nur das eine Wort? Ok, das hatte ich anders in Erinnerung.

Vielleicht liegt es an dem Bug, der in die Indy-Version gerutscht war, die mit Delphi 11 mitgeliefert wird:
https://github.com/IndySockets/Indy/pull/389
Der ist vermutlich mit Delphi 12 behoben. Du könntest nur Indy durch das aktuelle Indy manuell ersetzen, um den Fix in Delphi 11 zu bekommen.

Alternativ könntest du einmal versuchen, Passive auf True zu setzen, denn der Bug betrifft erstens nur aktive Transfers und zweitens funktionieren aktive Transfers heute ohnehin meistens nicht mehr, da man meistens hinter einem Router sitzt.

UweJansen 5. Jan 2024 13:10

AW: Probleme mit FTP-Get mit Indy FTP-Komponente nach Umstieg auf Delphi XE 11
 
Hi,

also das mit dem umschalten auf "Passive" hat es nicht gebracht !

Da kommt die Fehlermeldung "Zeitüberschreitung bei der Annahme".

Was muss ich denn da wo konkret bei github runterladen um die korrigierten Komponenten von Indy
zu bekommen bzw. wie bekomme ich die korrigierte Version dann nach DXE11 installiert ?
Das habe ich noch nie gemacht !

Grüße
Uwe


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz