簡體   English   中英

Delphi 2007和XE2:使用NativeInt

[英]Delphi 2007 and XE2: Using NativeInt

自Delphi XE2以來,NativeInt具有新的含義。 在32位運行時,NativeInt是32位整數。 在64位運行時,NativeInt是64位整數。

我有一些使用第三方DLL(32位和64位)的源文件。 這些DLL分別在32和64平台上使用32位和64位整數。

這些源文件在Delphi 2007 - Delphi XE2 32位平台上運行時沒有問題:

例如:

function Test: Integer;

當我嘗試將這些源文件遷移到Delphi XE2 64位平台時,上述功能不再有效,因為它需要64位整數。 為了使源可以同時適用於32/64平台,我改為

function Test: NativeInt;

它有效。

但是,聲明在Delphi 2007中不起作用,因為Delphi 2007將NativeInt視為64位整數:SizeOf(NativeInt)= 8

我可以通過使用條件指令RtlVersion或CompilerVersion來解決問題

function Test: {$if CompilerVersion<=18.5}Integer{$else}NativeInt{$ifend};

但由於源文件中有許多聲明,這將是乏味的。

有沒有更好的方法使源文件在Delphi 2007-XE2 win32和XE2 win64平台上運行?

更好的選擇是重新聲明NativeInt類型本身:

{$if CompilerVersion<=18.5}
type
  NativeInt = Integer;
{$ifend}

它應該每個單元執行一次,並且可以作為通用* .inc文件的一部分實現。

Gee:為什么不直接使用LongInt(需要32位)和Int64(否則)?

只要使用“整數”哪里無所謂?

使用“NativeInt”似乎是違反直覺的,你知道它在不同的時間意味着不同的東西......

PS:您可以隨時定義自己的OWN,自定義類型和$ ifdef!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM