有些基本的问题,想请教各位前辈。谢谢。
TVarData = packed record //packed什么意思呢?
case Integer of //这个Integer是什么意思?怎么来的呢?
0: (VType: TVarType; //下面的写法是什么意思?
case Integer of
0: (Reserved1: Word;
case Integer of
0: (Reserved2, Reserved3: Word;
case Integer of
varSmallInt: (VSmallInt: SmallInt);
varInteger: (VInteger: Integer);
varSingle: (VSingle: Single);
varDouble: (VDouble: Double);
varCurrency: (VCurrency: Currency);
varDate: (VDate: TDateTime);
varOleStr: (VOleStr: PWideChar);
varDispatch: (VDispatch: Pointer);
varError: (VError: HRESULT);
varBoolean: (VBoolean: WordBool);
varUnknown: (VUnknown: Pointer);
varShortInt: (VShortInt: ShortInt);
varByte: (VByte: Byte);
varWord: (VWord: Word);
varLongWord: (VLongWord: LongWord);
varInt64: (VInt64: Int64);
varString: (VString: Pointer);
varAny: (VAny: Pointer);
varArray: (VArray: PVarArray);
varByRef: (VPointer: Pointer);
);
1: (VLongs: array[0..2] of LongInt);
);
2: (VWords: array [0..6] of Word);
3: (VBytes: array [0..13] of Byte);
);
1: (RawData: array [0..3] of LongInt);
end;
我是新手,帮助也看不太明白,所以向大家请教。谢谢。
TVarData = packed record //packed什么意思呢?
case Integer of //这个Integer是什么意思?怎么来的呢?
0: (VType: TVarType; //下面的写法是什么意思?
case Integer of
0: (Reserved1: Word;
case Integer of
0: (Reserved2, Reserved3: Word;
case Integer of
varSmallInt: (VSmallInt: SmallInt);
varInteger: (VInteger: Integer);
varSingle: (VSingle: Single);
varDouble: (VDouble: Double);
varCurrency: (VCurrency: Currency);
varDate: (VDate: TDateTime);
varOleStr: (VOleStr: PWideChar);
varDispatch: (VDispatch: Pointer);
varError: (VError: HRESULT);
varBoolean: (VBoolean: WordBool);
varUnknown: (VUnknown: Pointer);
varShortInt: (VShortInt: ShortInt);
varByte: (VByte: Byte);
varWord: (VWord: Word);
varLongWord: (VLongWord: LongWord);
varInt64: (VInt64: Int64);
varString: (VString: Pointer);
varAny: (VAny: Pointer);
varArray: (VArray: PVarArray);
varByRef: (VPointer: Pointer);
);
1: (VLongs: array[0..2] of LongInt);
);
2: (VWords: array [0..6] of Word);
3: (VBytes: array [0..13] of Byte);
);
1: (RawData: array [0..3] of LongInt);
end;
我是新手,帮助也看不太明白,所以向大家请教。谢谢。
解决方案 »
- Delphi XE 一个Bug?日期问题
- 非常十分以及极其迷糊中,,,,,,,,,,,,,,,,,,,,,,,
- 如何在窗体中嵌入word ,包括word的菜单和工具条
- 我想要得到执行两个动作的间隔时间,要比较精确的,怎么实现呢?在线等!
- 数据库设计的问题。在线急等!答复马上散分!
- 求助,memo中的文字怎么打印啊?
- 哪个有数据库操作的图标(bmp)?
- 从vb转向delphi,有无好建议
- 请问 Tanimateimage 控件在哪里可以下载呀??只有30分了,送!!
- 狂郁闷!!!劳驾帮忙看一下,下面这几句比较恶心的程序!!
- 奇怪 的 代码 ,vk_control or vk_menu
- 用过IP3000控件的进来,关于显示的一个小小的问题
Integer是类型定义
至于后面,不知道该怎么说!!
Integer是从哪里来的呢?值是什么呢?
典型的时间换空间,空间换时间例子。
比如:
TVarData = record
A: Char;
B: SmallInt;
end;
如果B开始于2的倍数的地址,存取速度会比较快
所以它从字节2开始存放,而a从0开始,字节1就没用上,是个空的,整个record占用4个字节。TVarData = packed record
A: Char;
B: SmallInt;
end;
不进行对齐,一个挨一个存放,b直接跟在a后面,从字节1开始存放,整个record占用3个字节,但是存取速度会慢一点。
相当于C/C++的 union...1. 就是多种数据结构存储在同一个内存块里
2. 该内存块的空间由其中最大的数据结构确定
3. 数据可以直接取出 不过你要知道其中数据是否具有意义。。
樓主好像對編程的基礎不是很了解呀,學過幾天C的,上面都會知道是什麼意思呀。
这代表这个记录有多种解释
如:
TVarData = packed record
RawData: array [0..3] of LongInt;
end;
TVarData = packed record
VWords: array [0..6] of Word;
end;
TVarData = packed record
VBytes: array [0..13] of Byte;
end;
等等