[大龍駒]關於類型定位的一個回答。

beyondtkl 2004-12-15 12:00:15
剛有一朋友發貼問:
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..
這也就是一個作用域的區別。。一個是全局的 另一個不是...
...全文
71 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dlwxn 2004-12-15
  • 打赏
  • 举报
回复
up
beyondtkl 2004-12-15
  • 打赏
  • 举报
回复
:-)
jinjazz 2004-12-15
  • 打赏
  • 举报
回复
沙发
chinaandys 2004-12-15
  • 打赏
  • 举报
回复
beyondtkl老师,此论坛有你一人,足矣。太感谢了
chinaandys 2004-12-15
  • 打赏
  • 举报
回复
明白了,谢谢,beyondtkl老师,谢谢
chinaandys 2004-12-15
  • 打赏
  • 举报
回复
非常感谢: beyondtkl老师:

type HRESULT1 = type LongInt;
type LongInt = type Boolean;
type HRESULT2 = LongInt; //这里还是boolean并不为Longint;
type HRESULT3 = type LongInt; //这里也是boolean;
-----------------------------
区别似乎不明显......

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧