剛有一朋友發貼問:
type HRESULT = type Longint;
type HRESULT = Longint;
的區別:我經測試後 說一下:type HRESULT = Longint;
// 這種表示HRESULT 是最原始的LongInt就是Delphi內建的LongInttype 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..
這也就是一個作用域的區別。。一個是全局的 另一個不是...

解决方案 »

  1.   

    非常感谢: beyondtkl老师:type HRESULT1 = type LongInt;
    type LongInt  = type Boolean;
    type HRESULT2 = LongInt;            //这里还是boolean并不为Longint;
    type HRESULT3 = type LongInt;       //这里也是boolean;
    -----------------------------
    区别似乎不明显......
      

  2.   

    明白了,谢谢,beyondtkl老师,谢谢
      

  3.   

    beyondtkl老师,此论坛有你一人,足矣。太感谢了