关于变体类型定义中case语句部分的问题。

caike 2003-10-29 01:38:00
C语言中定义:
struct TVarData
{
union
{
smallint VSmallint;
char Vstring;
...
};
};
在C语言中可以直接这样使用:
TVarData.VSmallint
TVarData.VString;
但如果在delphi中定义:
type
TVarData=pack record
case Integer of
varSmallint: (VSmallint:Smallint);
varString: (VString:PWideString);
...
end;
也可以直接使用
TVarData.vstring;
TVarData.vsmallint;
吗?另外,什么时候是使用TVardata.vstring,什么时候是使用TVarData.vsmallint?是根据integer的值吗?integer值是怎么得来的呢?有时integer也为byte或其他的类型,这里integer是一个常量吗?但它的值是怎么来的呢?
...全文
212 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruthfox 2003-10-31
  • 打赏
  • 举报
回复
这里的Integer或者byte只是说明你这个变体最多有几个项,
如Case boolean of
那最多有2项,如果是Integer则有2^32个变体项,
不要去在意这个啦,尽管用case integer of,里面的项可以直接用的
具体什么时候用这个还是那个,就要看具体的代码了;
看一下TMessage这个类,你会知道怎么用的

16,742

社区成员

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

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