delphi array of char 类型从TBytes类型中取值的问题

varbuf:TBytes;workstring:arryeofChar;beginidTCPClient.IOHandler.ReadBytes(buf,66,fals... var
buf: TBytes;
workstring: arrye of Char;
begin
idTCPClient.IOHandler.ReadBytes(buf,66,false);
setlenght(workstring,7);
move(buf[29],workstring,7);
end;

取不到数据,高手帮看一下,是哪里写错了
var
buf: TBytes;
workstring: arrye of Char;
begin
idTCPClient.IOHandler.ReadBytes(buf,66,false);
setlength(workstring,7);
move(buf[29],workstring,7);
end;
展开
 我来答
RedBaronVIP
推荐于2016-11-25 · TA获得超过1147个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:238万
展开全部
1、把move(buf[29],workstring,7)改成Move(buf[29], workstring[0], 7)或者Move(buf[29], PChar(workstring)^, 7);
2、由于workstring声明为动态数组,所以workstring实际上是一个指针,字符的实际存储是从workstring[0]开始的。
3、PChar不仅仅是一种类型,在编译器的作用下,它更像一个函数;对于普通的动态数组,它可以把数组变量强行转化为它的本来面目——指针;对于string这种特殊的动态数组(在计数引用、字串长度之后才是字符数组),PChar会自动帮助你跨过计数引用、字串长度等存储空间,指向真正的字符数组首地址。
4、Delphi中最垃圾的事情就是全面改成Unicode版本,外加TBytes等一堆一堆的狗屎。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heart经济贸易
2016-03-17
知道答主
回答量:43
采纳率:0%
帮助的人:11.8万
展开全部
什么问题啊 看看我能不能解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式