【问题标题】:app using TIdFTP not migrating from Delphi 5 to Delphi 2009...corrupt uploads使用 TIdFTP 的应用程序未从 Delphi 5 迁移到 Delphi 2009...损坏的上传
【发布时间】:2009-09-21 17:08:09
【问题描述】:

我编写了一个使用 TIdFTP 的 Delphi 5 应用程序。多年来它一直很好用。它的唯一目的是上传一个excel文件。

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

我最近迁移到 delphi 2009,因为我重新加载了我的机器并且 delphi 5 现在已经消失了。

该应用程序看起来仍然可以正常工作,但是在 1.5 MB 文件的大部分过程中,该文件已损坏。看起来字节已被删除,并且上传的文件比原始文件短(大约 200 字节)。

我首先想到的是传输类型,所以我将其设置为二进制,但除此之外,我不知道。

有什么想法吗?

谢谢! mp

【问题讨论】:

    标签: delphi delphi-2009 indy


    【解决方案1】:

    您使用的是哪个版本的 Indy?你试过最新的吗?
    另外,您是否尝试过使用其他类型的文件(纯文本、可执行文件...)

    【讨论】:

    • 感谢您的 cmets!我正在使用 d2009 附带的 10.2.5。我不愿意使用最新的,因为我预计 codegear 的 d2009 安装副本中的任何丑陋问题都将包含在 codegear 的更新中。另外,(如 JCL、JVCL)我对升级它们持谨慎态度,因为这可能会带来麻烦。非常有趣:EXE 和其他 Excel 上传正常!我对不同的名称进行了另存为,只要它具有不同的名称,它就可以正确上传......不再像 Indy 问题了。谢谢弗朗索瓦!
    • 10.2.5 已经很老了,实际上并不支持 D2009+ 的 Unicode 功能。 CodeGear 从不在其 IDE 更新中包含对 Indy 的更新,因为更新必须保持接口兼容(并且 Indy 更新通常与接口不兼容)。您可以安全地删除 CodeGear 的默认 Indy 安装并手动安装更新版本。当前的 Indy 版本是 10.5.7。
    【解决方案2】:

    Delphi 5 和 Delphi 2009 之间的一个很大区别是 Delphi 2009 使用 Unicode。也许您正在混合使用 unicode 和非 unicode?接收 ASCII,但将其视为 UTF8?

    【讨论】:

      【解决方案3】:

      像你的一样,我的第一个想法是传输没有发生二进制......这似乎更有可能考虑到你的后续更改文件名解决了问题。你有可以用来跟踪 ftp 对话的数据包嗅探器吗?通过这样做,您将能够确定模式是否设置正确。

      -不要

      【讨论】:

      • 我必须仔细检查 Indy 过去的代码修订版本才能确定,但​​ IIRC 在早期的 Indy 10 版本中存在一个错误,即使 TransferType 设置为 Binary,TIdFTP 也会以 ASCII 格式传输数据(反之亦然,我忘记了)。这在以后的版本中得到了修复。
      【解决方案4】:

      Delphi 5 没有安装 Indy 组件。因此,您必须自己下载并安装它。我从来没有让它工作。现在,我使用的是 Delphi 7,它已经预装了它。所以,我从来没有遇到过Indy的问题。只有当我下载它使用时。

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2012-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        相关资源
        最近更新 更多