2009-09-21 11 views
0

J'ai écrit une application Delphi 5 qui utilise TIdFTP. ça fonctionne très bien depuis des années. Son seul but est de télécharger un fichier Excel.application en utilisant TIdFTP ne migrant pas de Delphi 5 à Delphi 2009 ... correctifs corrompus

object ftp: TIdFTP 
    OnStatus = ftpStatus 
    IPVersion = Id_IPv4 
    AutoLogin = True 
    Host = 'somewhere.ca' 
    Passive = True 
    Password = 'guess' 
    TransferType = ftBinary 
    Username = 'xray' 
    ProxySettings.ProxyType = fpcmNone 
    ProxySettings.Port = 0 
end 

J'ai récemment migré vers Delphi 2009 depuis que j'ai rechargé ma machine et que Delphi 5 est parti maintenant. L'application semble toujours fonctionner mais la plupart du temps, grâce au fichier de 1,5 Mo, le fichier est corrompu. il semble que les octets ont été supprimés et que le fichier téléchargé est plus court que l'original (environ 200 octets). Ma première pensée a été le type de transfert, donc je l'ai mis en binaire mais au-delà, je ne sais pas.

des idées?

merci! mp

Répondre

0

Quelle version d'Indy utilisez-vous? Avez-vous essayé le dernier?
Aussi, avez-vous essayé avec d'autres types de fichiers (texte brut, exécutables ...)

+0

merci pour vos commentaires! J'utilise 10.2.5 fourni avec d2009. Je suis réticent à utiliser le dernier depuis que je m'attends à ce que tous les problèmes de la copie de l'installation d2009 de codegear soient inclus dans une mise à jour de codegear. aussi, (comme JCL, JVCL) je suis prudent à propos de leur mise à niveau car un pourrait provoquer des problèmes. TRÈS INTÉRESSANT: Les fichiers EXE et d'autres téléchargements Excel bien! J'ai fait un SaveAs à un nom différent et qui télécharge correctement tant qu'il a un nom différent ... ne sent plus comme un problème d'Indy. merci François! –

+1

10.2.5 est très ancien et ne supporte pas réellement les fonctionnalités Unicode de D2009 +. CodeGear n'inclut jamais les mises à jour d'Indy dans leurs mises à jour IDE, car les mises à jour doivent rester compatibles avec les interfaces (et les mises à jour d'Indy ne sont généralement pas compatibles avec l'interface). Vous pouvez supprimer en toute sécurité l'installation Indy de CodeGear et installer une version plus récente manuellement. La version actuelle d'Indy est 10.5.7. –

0

Une grande différence entre Delphi 5 et Delphi 2009 est que Delphi 2009 utilise Unicode. Peut-être que vous mélangez unicode et non-unicode? Réception ASCII, mais en le traitant comme UTF8 par exemple?

0

Comme le vôtre, ma première pensée est que le transfert ne se fait pas binaire ... cela semble plus probable compte tenu de votre suivi que la modification du nom du fichier résout le problème. avez-vous un renifleur de paquets que vous pouvez utiliser pour suivre la conversation ftp? en faisant cela, vous serez en mesure de dire avec certitude si le mode est correctement défini.

-Don

+1

Je devrais vérifier les révisions passées du code d'Indy pour être sûr, mais IIRC il y avait un bogue dans une version précédente d'Indy 10 où TIdFTP a transféré des données en ASCII même si le TransferType était réglé sur Binary (ou vice versa, j'oublie lequel). Cela a été corrigé dans une version ultérieure. –

0

Delphi 5 n'a pas le composant Indy déjà installé. Donc, vous devez le télécharger et l'installer vous-même. Je n'ai jamais réussi à le faire fonctionner. Maintenant, j'utilise Delphi 7 et il l'avait déjà préinstallé. Donc, je n'ai jamais eu de problème avec Indy. C'est seulement quand je le télécharge pour l'utiliser.