考考Delphi的基础

cacom1232004 2009-09-01 03:46:58
以下的記錄(結構)變數在記憶體占( )位元组?
type
a = packed record
v1: Byte;
v2: Word;
v3: string[8];
v4: Double;
v5: string;
v6: TForm;
end;
...全文
259 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdxhhxb 2009-11-02
  • 打赏
  • 举报
回复
。。。。
justin_wkf 2009-09-07
  • 打赏
  • 举报
回复
有意思
modaoshi3002 2009-09-05
  • 打赏
  • 举报
回复
我一般不会在record中使用string,最多使用一个string[]
因为用前者的话,大小问题还真不好说,按照各位大大的说法,他占位4个字节,
那么就是说他只是一个指针,或者是一个引用了?

那请大家考虑这个情况: 如果我们要把一个包含string的record,读进一个流中

aStream: TMemoryStream;
gs: TMyRecord;

aStream.Write(gs, SizeOf(TMyRecord));

会出现什么情况?????
xiaowei_001 2009-09-04
  • 打赏
  • 举报
回复
7#
Harryfin 2009-09-03
  • 打赏
  • 举报
回复
应该是台湾的朋友,因为他们那边管内存叫记忆体,变量叫变数
lionser 2009-09-03
  • 打赏
  • 举报
回复
学习
qkhhxkj102 2009-09-03
  • 打赏
  • 举报
回复
用packed这个
会压缩吧
如果不用就会对齐
cacom1232004 2009-09-02
  • 打赏
  • 举报
回复
果然是28 为什么string[8]占9位,是因为结束符吗?
sanguomi 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dolphin_001 的回复:]
如果換成c++,结论会不一样。会大一些,因为c++内存对齐的方式和delphi不一样,delphi是byte。c++要看系统和编译器。
[/Quote]

和语言有什么关系,他定义的时候就加了关键字packed , C++里加上#pragma pack(1)
zz1001 2009-09-02
  • 打赏
  • 举报
回复
老大,您是台湾来的吗?繁体字耶!
支持中文哦 2009-09-02
  • 打赏
  • 举报
回复
string[8]有8个字符,分别从string[1]到string[8]
string[0]表示字符串元素个数,这个是pascal集成过来的。当然只能用于shortstring
Dolphin_001 2009-09-02
  • 打赏
  • 举报
回复
如果換成c++,结论会不一样。会大一些,因为c++内存对齐的方式和delphi不一样,delphi是byte。c++要看系统和编译器。
winstonbonaparte 2009-09-01
  • 打赏
  • 举报
回复
byte 1
word 2
string[8] 9
double 8
string 4
TForm 4
winstonbonaparte 2009-09-01
  • 打赏
  • 举报
回复
还真不知道是多少。
刚才用D7试了下,求出来是28
ok1411 2009-09-01
  • 打赏
  • 举报
回复
.
SuperTitan001 2009-09-01
  • 打赏
  • 举报
回复
这道题还有点意思,呵呵
bdmh 2009-09-01
  • 打赏
  • 举报
回复
用SizeOf,取
注意 string[8]长度不是8,是9
shuihan20e 2009-09-01
  • 打赏
  • 举报
回复
en
willflyz 2009-09-01
  • 打赏
  • 举报
回复
SizeOf(a)

16,748

社区成员

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

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