[大龍駒]關於類型定位的一個回答。
剛有一朋友發貼問:
type HRESULT = type Longint;
type HRESULT = Longint;
的區別:
我經測試後 說一下:
type HRESULT = Longint;
// 這種表示HRESULT 是最原始的LongInt。。。就是Delphi內建的LongInt
type HRESULT = type Longint;
// 而這個 就不一定是最原始的
type LongInt = Boolean; // 現在LongInt變為Boolean型了
你再
type HRESULT = type LongInt; // 那麼HRESULT 就是Boolean型了!!
也就是說 LongInt被覆蓋了。。
type HRESULT1 = type LongInt;
type LongInt = type Boolean;
type HRESULT2 = LongInt;
type HRESULT3 = type LongInt;
procedure TForm1.Button1Click(Sender: TObject);
var
h1: HRESULT1;
h2: HRESULT2;
h3: HRESULT3;
begin
h3 := True; // 這是Boolean型了
end;
結論:
type HRESULT = type Longint; // 1
type HRESULT = Longint; // 2
1. 表示HRESULT可能為用戶自定義的LongInt類型,如果用戶沒有重定義LongInt類型 那麼就是系統默認的LongInt類型, 這種情況下 原來的LongInt肯恩被覆蓋...
2. 表示HRESULT為系統默認的LongInt類型 不會被用戶覆蓋
為了更安全的使用:
a. 請不要重定義 delphi內部的數據類型
b. 在類型明確的情況下 請使用 type aa = longint; // 不要加type..
這也就是一個作用域的區別。。一個是全局的 另一個不是...