case integer of 就是为了让各种数据共享同一块存储区。意思是这个记录的一个字段代表它所存储的数据类型。另一个按指定的类型存储该数据。、
你可以这样做:
var
x:tvariantrecord;
begin
x.intfield:=0;
x.nullstrfield:=3.1415927;
(或者:
x.intfield:=2;
x.nullstrfield:='A';
)
end;
你可以这样做:
var
x:tvariantrecord;
begin
x.intfield:=0;
x.nullstrfield:=3.1415927;
(或者:
x.intfield:=2;
x.nullstrfield:='A';
)
end;
解决方案 »
- Combobox取值如何才能不同?
- 连接linux环境下的MySQL数据库,用哪种方式连。(急急急!! 在线等待!!)
- dbmemo上显示内容,在程序运行时,点击该控件,内容就没了?
- 有谁愿意一起研究外挂技术么?
- 大虾们,请教怎样在线更新数据。比如金山毒霸在线更新病毒数据一样。
- 如何求得一个用数字型表示的十六进制数?delphi是否有这样的函数?
- 谁用过DDEServerConv和DDEClientConv控件做过DDE程序?
- 请教:为什么我在录入大小超过1M的.bmp图片到SQL SERVER的时候,系统提示‘Invalid BLOB Length.’如何解决???
- Select 可以搞定一切吗?来者有分!!!
- 交互式报表问题,快救我啊!
- 字符串赋值给字符型数组的问题!!!请帮忙!急!!!!!!!!!!!!!!!!!!
- 关于ocx问题??????????
那就得先判断:
if x.initfield=0 then ...
else if x.inifield=1 then ...
...
case integer of
0:(d:double);
1:(I:integer);
2:(C:char);
是如下内存影象:
1 byte
2 byte
3 byte
4 byte
5 byte
6 byte
7 byte
8 byte
当存储 Char 时只使用了 1 byte,存储 integer 时使用了 1 byte - 4 byte,存储 Double 时使用了 1 byte - 8 byte。
现在我将一个该类型的数据 rec 传入你的函数,你的在编写函数时你使用 rec.D 还是 rec.I 还是 rec.C 来取出数据呢?
所以我们事先约定用 initfield 中的值来指明 case 中的类型,
if x.initfield= then x1 := rec.D
else if x.inifield=1 then x2 := rec.I ...写了好多(其实和 skimwater 意思一样),明白了吗?
没什么关系啊。