【问题标题】:Is there a version of Async Pro which works with Delphi XE3?是否有适用于 Delphi XE3 的 Async Pro 版本?
【发布时间】:2015-04-06 16:50:50
【问题描述】:

我想在我的 Delphi XE3 中使用 Async Pro。我在 SourceForge 上找到了 A407 版本,似乎是最新的。当我尝试安装运行时包 A407_R100.bpl 时,我收到一个数据长度超过 2GB 的错误。当我解决这个问题(有一些猜测)时,我得到了 4 个其他错误。我也可以尝试修复这些问题,但恐怕我将不得不修补太多代码,以至于它无法再工作了。

是否有适用于 XE3 的 Async Pro 版本?或者至少清楚且经过验证的说明如何修补代码?

更新
Here我发现了一个似乎更新的AsyncPro库;至少这些包被命名为 A407_*140.bpl 而不是 A407_*100.bpl。我在 AwAbsPd.pas 的这部分代码中仍然有几个错误:

procedure InitializeUnit;
var
  TmpDateSeparator : char;
  TmpDateFormat : string[15];
  TmpDateTime : TDateTime;
begin
  {Set Unix days base}
  TmpDateFormat := ShortDateFormat;
  TmpDateSeparator := DateSeparator;
  DateSeparator := '/';
  ShortDateFormat := 'mm/dd/yyyy';
  TmpDateTime := StrToDateTime('01/01/1970');
  UnixDaysBase := Trunc(TmpDateTime);
  DateSeparator := TmpDateSeparator;
  ShortDateFormat := TmpDateFormat;

虽然 SysUtils 在“uses”子句中,但我收到了未定义 ShortDateFormatDateSeparator 的错误。所以我对它们进行了硬编码:

procedure InitializeUnit;
var
  TmpDateSeparator : char;
  TmpDateFormat : string[15];
  TmpDateTime : TDateTime;

// added stevenvh
var
  DateSeparator: char;
  ShortDateFormat: String;
  ShortTimeFormat: String;
// end addition

begin
  // added stevenvh
  DateSeparator := '-';
  ShortDateFormat := 'yyyy-mm-dd';
  ShortTimeFormat := 'HH:mm:ss';
  // end addition

  {Set Unix days base}
  TmpDateFormat := ShortDateFormat;
  TmpDateSeparator := DateSeparator;
  DateSeparator := '/';
  ShortDateFormat := 'mm/dd/yyyy';
  TmpDateTime := StrToDateTime('01/01/1970');
  UnixDaysBase := Trunc(TmpDateTime);
  DateSeparator := TmpDateSeparator;
  ShortDateFormat := TmpDateFormat;

快到了!运行时和设计时间包都可以编译,但是当我尝试安装设计时间包时,我收到一个错误,“01/01/1970”不是有效日期。这不是上述代码中的错误,因为当我更改代码中的日期时,它仍然是“01/01/1970”。

原来只有 1 个其他文件包含“01/01/1970”作为文本,但这是一个 .ocx 文件,所以我不确定如何或是否应该修补它。

【问题讨论】:

  • 您必须提供 FormatSettings 定义。并使用带有 FormatSettings 重载的日期/时间函数。见ShortDateFormat vs FormatSettings.ShortDateFormat?
  • 这些版本号(100 和 140)表明它们适用于 Delphi 3 和 6。如果是这种情况,则非常旧;-)
  • @Downvoter - 当您投反对票时,请添加评论您为什么这样做,以便我改进我的问题。如果不发表评论,您的反对票对我来说没有任何意义。

标签: delphi packages delphi-xe3


【解决方案1】:

根据这篇博文:

http://blog.kassebaum.eu/?p=379

Async Proffesional 目前由 Roman Kassebaum 维护,但仅适用于最新版本的 RAD studio(Delphi 和 CBuilder)。

提到的博客链接到下一个源伪造页面: http://sourceforge.net/projects/turbopowerasyncprofessionalnew/?source=navbar

页面上的信息表明该项目已关闭,并已移至 github,但未提供链接。

在 GitHub 上搜索后,我找到了项目页面

https://github.com/TurboPack/AsyncPro

无论如何,既然 Roman Kassebaum 正在维护该项目以与最新的 Delphi 版本兼容,它可能不适合您。

因此,我强烈建议您与 Roman Kassebaum 联系,因为他会最清楚您应该在 Delphi XE3 安装中使用哪个版本,或者需要修复什么以使其兼容。

【讨论】:

    【解决方案2】:

    AsyncPro 官方版本已移至 GitHub。您可以在TurboPack 下找到它。它支持最新的Delphi和C++Builder版本。

    我还为 XE3 创建了一个分支。您可以在TurboPack XE3 下找到它。

    【讨论】:

    • 有没有版本文档可以找到?我也无法从 TurboPack 中找到指向 TurboPack XE3 的链接。
    【解决方案3】:

    使用FormatSettings.ShortDateFormat, FormatSettings.DateSeparator, ... 而不是引入您自己的变量。这将最接近原版。

    更简洁的方法是使用带有格式设置重载的日期/时间函数,而不是临时更改全局格式设置。

    【讨论】:

    • 感谢您的回复。我并不是想让我的不那么干净的补丁永久存在,我只是想看看它们是否是唯一有问题的线。
    • 如果你使用FormatSettings.ShortDateFormat, ... 那么代码应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多