J'ai eu toutes sortes de problèmes avec Indy et suivant les recommandations de quelqu'un (à stackoverflow) J'ai mis à jour la dernière version d'Indy - du moins c'est ce que j'avais l'intention de faire. Avant de commencer l'installation, j'ai effacé manuellement tous les fichiers contenant le mot "indy" de mon Delphi et de la base de registre. Ensuite, j'ai suivi la procédure d'installation standard: http://www.indyproject.org/sockets/Docs/Indy10Installation.en.aspxIndy ne fonctionne plus après la mise à jour
Maintenant le code ci-dessous ne fonctionne plus. Le code retourne juste FALSE;
function Download(CONST aSourceURL: string; CONST aDestFileName: string; OUT aErrm: String): Boolean;
VAR
Stream: TMemoryStream;
IDAntiFreeze: TIDAntiFreeze;
fIDHTTP : TIDHTTP;
begin
fIDHTTP := TIDHTTP.Create(NIL);
// fIDHTTP.ConnectTimeout:=5000; <- not recognized
fIDHTTP.ReadTimeout:= 1000;
fIDHTTP.HandleRedirects := TRUE;
fIDHTTP.AllowCookies := FALSE;
fIDHTTP.Request.UserAgent := 'Mozilla/4.0';
fIDHTTP.Request.Connection := 'Keep-Alive';
fIDHTTP.Request.ProxyConnection := 'Keep-Alive';
fIDHTTP.Request.CacheControl := 'no-cache';
IDAntiFreeze := TIDAntiFreeze.Create(NIL);
Stream := TMemoryStream.Create;
TRY
TRY
fIDHTTP.Get(aSourceURL, Stream);
{
if FileExists(aDestFileName)
then DeleteFile(PWideChar(aDestFileName)); }
Stream.SaveToFile(aDestFileName);
Result:= TRUE;
EXCEPT
On E: Exception do
begin
Result:= FALSE;
aErrm := E.Message + ' (' + IntToStr(fIDHTTP.ResponseCode) + ')';
end;
END;
FINALLY
Stream.Free;
IDAntiFreeze.Free;
fIDHTTP.Free;
END;
end;
Il y a une façon de voir quelle version d'Indy j'ai installé?
Editer:
Aussi, je reçois un message "Unit idHTTP a été compilé avec une version différente de IdException.IdException".
Fixé.
Cela ressemble à une mauvaise installation, comme si vous n'aviez pas complètement supprimé l'ancienne version avant d'en installer une plus récente (la recherche de fichiers avec "indy" dans le nom ne suffit pas). –
L'installation fonctionne maintenant (en effet j'ai dû nettoyer les dossiers Delphi vraiment bien et le registre aussi Cependant, le code ne télécharge toujours pas le fichier – Ampere
Qu'est-ce qui ne fonctionne vraiment pas maintenant? Vous obtenez des erreurs? En tout cas, je vous suggère de vous débarrasser de TIdAntiFreeze et de déplacer le téléchargement dans un thread de travail séparé.Si vous avez besoin de Download() pour être une fonction de blocage, il peut attendre sur le thread pour terminer –