2010-07-06 9 views
1

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é.

+0

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). –

+0

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

+0

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 –

Répondre

2

Vous devez d'abord utiliser l'installation Delphi pour désinstaller la version d'Indy installée avec Delphi - vous pouvez ensuite nettoyer tout fichier restant. Vous ne devriez pas commencer par nettoyer les dossiers et registre à la main. Ensuite, vous pouvez installer une autre version. Soyez conscient que certaines versions sont "cassées"

+1

C'est pourquoi je n'aime pas les grandes bibliothèques tierces telles que Jedi et Indy. – Ampere

Questions connexes