见鬼!

zkfly 2001-04-24 05:28:00
一个语句居然不对。
ShowMessage(IntToStr(SizeOf('123456')));
居然告诉我是‘4’
...全文
142 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hp1200 2001-07-29
  • 打赏
  • 举报
回复
up
Kingron 2001-04-25
  • 打赏
  • 举报
回复
呵呵,搞错了。~~~~~~~~~~~~~
anggogo 2001-04-25
  • 打赏
  • 举报
回复
讲得太复杂了吧。
其实DELPHI是自动分配内存的,如果在FFFF以内就是4,超过的话也就变成double了,当然就是8!
merry_prince 2001-04-24
  • 打赏
  • 举报
回复
SizeOf function is described below:
Returns the number of bytes occupied by a variable or type.
So you can know a variable's size through the function. It is different from Length function which aim is to return the length of a variable.
Here is an instances for SizeOf function, you can refer to it.
type

CustRec = record
Name: string[30];
Phone: string[14];
end;
var
P: ^CustRec;
begin
GetMem(P, SizeOf(CustRec));
Canvas.TextOut(10, 10, 'The size of the record is ' + IntToStr(SizeOf(CustRec)));
FreeMem (P, SizeOf(CustRec));
end;

the Result is 46.
Hope it can help you.
GoodHope 2001-04-24
  • 打赏
  • 举报
回复
数值察看器实际上是对输入的表达式重新解释,因此,结果有可能与程序运行不一致。
GoodHope 2001-04-24
  • 打赏
  • 举报
回复
Delphi中长字符串是一个指针,因此SizeOf返回4,如果用屏蔽掉长字符串的功能后结果就不同了。取得字符串长度用Length。
zkfly 2001-04-24
  • 打赏
  • 举报
回复
理论上说SizeOf('1234567')应该等于4
但是为什么数值查看修改器(Ctrl+F7)里的SizeOf('1234567')结果是8?
hzb 2001-04-24
  • 打赏
  • 举报
回复
你想达到什么目的?
zkfly 2001-04-24
  • 打赏
  • 举报
回复
Help.
zkfly 2001-04-24
  • 打赏
  • 举报
回复
不好意思,上面的结果是8
zkfly 2001-04-24
  • 打赏
  • 举报
回复
那问题是,在Delphi4调试环境下,启动数值查看修改器(Ctrl+F7),输入SizeOf('1234567')结果是7,怎解?
oldhawk 2001-04-24
  • 打赏
  • 举报
回复
这不是整数,是字符串。你可以把字符加长,还锝4
guoyuzhang 2001-04-24
  • 打赏
  • 举报
回复
这个结果是正确的,你可以试试换成
ShowMessage(IntToStr(SizeOf(boolean)));
就会显示1,你的语句的sizeof实际上是一个指针,而不是一个实际值
anggogo 2001-04-24
  • 打赏
  • 举报
回复
哈哈
Kingron 2001-04-24
  • 打赏
  • 举报
回复
不是4是什么?一个整形数占用4字节!!!sizeof取得变量占用内存字节的大小。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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