求助:结构体转成字符串出现的问题
问题是这样子的
比如
type
data_mess=record
pw:string[4];
end;
var
pppp:data_mess;
aaaa:string;
begin
pppp.pw:=#1+#1+#1+#4;
SetLength(aaaa,SizeOf(pppp));
Move(testpack,aaaa[1],SizeOf(pppp));
...
end
我在单步调试时查看这个 SizeOf(pppp) 这个值 为什么是5呢???
还有个问题
我把两个字符串合并后转成字节数组时
比如
s1,s2:string[4];
s:string;
qqqq:array[0..7] of byte;
....
s:=s1+s2;
Move(s[1],qqqq[0],SizeOf(s));
我查看了下qqqq的值 只有前四个是正确的也就是S1对应的字节 后边的出现了混乱
我觉得这样子合并字符串后会不会出现了错误了~
这两个问题 应该怎么解决呢?~
请教下高手~
[解决办法]
sizeOf(s)这个有问题,你的这个只是获取了s这个指针的长度,你要用Length
[解决办法]
string是一个指针,不能用SizeOf来获取内存的大小
[解决办法]
string[4];这类短字符声明,内存中会多出一个位来保存他的实际长度,所以SizeOf会是5,而length正是取的多出的这个位置的值,是4