Delphi长期以来支持一些基本的数字类型,我想知道它们是如何相互关联的.
在Delphi 2007中,我发现了这些声明(有些是冲突的,有些只是别名):
Types.pas:
DWORD = LongWord;
Largeint = Int64;
Run Code Online (Sandbox Code Playgroud)
getmem.inc:
DWORD = Integer;
Run Code Online (Sandbox Code Playgroud)
Windows.pas:
DWORD = Types.DWORD;
SHORT = Smallint;
UINT = LongWord;
ULONG = Cardinal;
LONGLONG = Int64;
TLargeInteger = Int64;
ULONGLONG = UInt64;
Run Code Online (Sandbox Code Playgroud)
这让我想到基本签名数字类型是SmallInt,Integer和Int64.无符号,有Byte,WORD和UInt64.但Cardinal和LongWord有什么区别?(顺便说一下,这些类型的原始和预期外壳是什么?)
是否有一个有符号8位整数(Int8)的类型?
// Int8 = ?unknown?;
UInt8 = Byte;
Int16 = SmallInt;
UInt16 = Word;
Int32 = Integer;
UInt32 = LongWord;
// Int64 already exists
// UInt64 already exists
Run Code Online (Sandbox Code Playgroud)
最后,我应该如何定义Int和UInt,特别是关于C/C++兼容性以及将来切换到其他平台(可能还有64位)?(当然,一个相关的问题是如何在64位Delphi中定义各种数字类型?)
在我的Inno安装脚本中,我正在执行第三方可执行文件.我正在使用如下Exec()功能:
Exec(ExpandConstant('{app}\SomeExe.exe'), '', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
Run Code Online (Sandbox Code Playgroud)
提到ewWaitUntilTerminated它等到SomeExe.exe不退出.我想等待10秒钟.
那有什么解决方案吗?
如何"触摸"文件,即从InnoSetup(Pascal)脚本中将其上次修改时间更新为当前时间?