小编Jef*_*ope的帖子

两个TDateTime变量之间的秒数差异

查找返回两个TDateTime值之间的秒差的代码示例.具体来说,我试图比较两个TDateTime值,如果大于第二个阈值,它将运行一个特定的方法.

谢谢!

delphi

24
推荐指数
2
解决办法
4万
查看次数

为什么64位Delphi应用程序计算的结果与32位构建不同?

我们最近开始创建64位构建的应用程序.在比较测试期间,我们发现64位构建的计算方式不同.我有一个代码示例,演示了两个版本之间的差异.

var
  currPercent, currGross, currCalcValue : Currency;
begin

  currGross := 1182.42;
  currPercent := 1.45;
  currCalcValue := (currGross * (currPercent * StrToCurr('.01')));
  ShowMessage(CurrToStr(currCalcValue));
end;
Run Code Online (Sandbox Code Playgroud)

如果您在32位版本中逐步执行此操作,则使用17.1451计算currCalcValue,而使用17.145返回64位版本.

为什么64位构建不计算额外的小数位?所有变量都定义为4个十进制货币值.

delphi 32bit-64bit delphi-xe2

15
推荐指数
1
解决办法
949
查看次数

为什么不将对象默认为nil?

在Delphi中,从TObject下降的变量的记录行为是默认值nil.但是,我遇到的情况并非如此.

通过IDE(F9)运行以下代码示例会得到混合结果

var
  objTemp : TMemDataSet;
begin
  if (objTemp = nil) then
     ShowMessage('Nil');
end;
Run Code Online (Sandbox Code Playgroud)
  • 32位/调试模式,默认为零
  • 32位/释放模式,默认为零
  • 64位/调试模式,默认为nil
  • 64位/释放模式,默认为零

我的理解是值应始终默认为零.

还在XE2和XE5下对此进行了测试,结果相同.

这是Delphi中的预期行为吗?

delphi

6
推荐指数
1
解决办法
1392
查看次数

Delphi 7应用程序和Microsoft Security Essentials

我们在许多客户端计算机上运行Delphi 7应用程序.最近,一些客户端计算机开始使用Microsoft Security Essentials.它开始将我们的可执行文件识别为恶意软件并立即将其关闭.MS Security essentials显示的消息是:

"Security Essentials在您的PC上检测到它无法识别的项目......"

奇怪的是它并不总是出现在应用程序中的相同选项.您可以在后续登录时执行相同的操作,有时它可以正常工作,有时安全要件会将其关闭.这使我们很难在我们的应用程序中缩小到特定原因.

我尝试使用提升的帐户权限运行应用程序,但仍然能够使其失败.在运行相同应用程序的Delphi XE2编译时,我无法复制该问题.

关于要寻找什么的任何想法? 我们真的试图避免将我们的应用程序添加到Security Essentials排除列表中.我们的应用程序从未被确定为不同安全程序(norton,mcaffee等)的问题.

delphi delphi-7 delphi-xe2 ms-security-essentials

5
推荐指数
1
解决办法
354
查看次数

Delphi 2010 BSOD错误

我们将Delphi 7的应用程序移植到Delphi 2010,并且客户在Windows XP下运行时遇到间歇性BSOD(蓝屏死机)错误.错误是非常零星的,并且很难追查.仅供参考:我们正在使用Delphi 2010的内置内存管理器.

我们首先想到的是硬件问题,但升级系统驱动程序无法解决问题.

有没有其他人在使用Delphi 2010生成的应用程序的XP下遇到BSOD问题?如果是这样,您对我们如何纠正此问题有任何建议吗?

谢谢你的协助!

delphi bsod delphi-2010

4
推荐指数
1
解决办法
637
查看次数

为什么文件在通过FTP传输后有时会有不同的大小或损坏?

我在使用Delphi XE2中的TidFTP组件下载文件时遇到问题.我能够连接到FTP站点,获取文件列表并执行get命令.但是,当我尝试使用get命令下载文件时,文件的下载量始终大于源文件.然后后续文件已损坏.

此外,如果我尝试下载多个文件,则会下载第一个文件(大于源文件),并跳过其余文件.get命令不会抛出任何错误,它只是退出.我试图挂钩TIDFTP控件上的一些事件,如AfterGet和OnStatus,但一切看起来都很正常.

我尝试使用第三方FTP客户端访问该文件并下载它只是为了确保它不是我们的FTP服务器的问题,并且该下载按预期工作.所以我认为它可能与TidFTP控件有关,或者我可能做错了什么.

这是我用来下载文件的例程:

var
  ftp: TIdFTP;
  strDirectory: string;
begin
  ftp := TIdFTP.Create(nil);
  try
    ftp.Host := 'ftp.myftpserver.com'
    ftp.Passive := false;
    ftp.Username := 'TestUser';
    ftp.Password := 'TestPassword';
    ftp.ConnectTimeout := 1000;
    ftp.Connect();
    ftp.BeginWork(wmRead);
    ftp.ChangeDir('/TestArea/');
    strDirectory := 'c:\test\';
    if not DirectoryExists(strDirectory) then
      CreateDir(strDirectory);
    ftp.Get('Test.zip', strDirectory + '\' + 'Test.zip', true, false);
   ftp.Disconnect();
  except
    on e: exception do
      showMessage(e.message);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi indy delphi-xe2

4
推荐指数
1
解决办法
9609
查看次数

如何从 Delphi 64 位应用程序 (XE5) 获取 CPU 速度?

我们正在使用 Delphi XE5 将应用程序套件迁移到 64 位。在“关于”框中,我们显示 CPU 速度。我们当前使用的例程是 32 位汇编,因此无法在 64 位下编译。

有没有一种本地方法可以从 Delphi 64 位中检索 CPU 速度?

delphi 64-bit delphi-xe5

2
推荐指数
1
解决办法
2776
查看次数