delphi函数返回数组变量问题?(求解)

downkey 2015-12-13 09:19:23
目的:写一delphi函数用于解数据包(包中含多帧数据,不同的帧合成的一个大包),将每帧数据放入数组中,返回。
数组的长度以包中的帧的个数来决定。

type
Tarray:array of string;

Function AngularTransduceDataPacketToFrame(DataPacket:string):Tarray;
var
i,k: integer;
begin
k:=1;
setlength(Result,5);//5是包的数据帧个数,实为变量,为了简化输入常量
for i := 0 to 5 do
begin
Result[i]:=copy(DataPacket,k,2);
k:=k+2
end;
end;



procedure TForm1.Button35Click(Sender: TObject);
var
Str:string;
a:Tarray;
begin
Str:='77100084000021551000366800000000B8';
a:=AngularTransduceDataPacketToFrame(str);
showmessage(a[1]);
end;

程序点击button3崩溃,错误:Project project1.exeraised exception class Eacessviolation with message 'Access violation at address 004045AC in module 'Project1.exe .Read of address 00000046.process stopped use step or Run to continue
...全文
240 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Devchenxip 2015-12-14
  • 打赏
  • 举报
回复
1、Tarray定义错误,正确的应该是 type Tarray = array of string; 2、数组长度设置问题导致崩溃: setlength(Result,5); //这个代表数组长度是5。 for i := 0 to 5 do //这个会循环6次,越界了,当然崩溃了。 改成for i:= 0 to 4 do 就可以了。。 大哥,你自己调试一下,跟踪下就马上能发现问题了。。。

16,748

社区成员

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

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