【发布时间】: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”子句中,但我收到了未定义 ShortDateFormat 和 DateSeparator 的错误。所以我对它们进行了硬编码:
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