各位大神,我这部分的循环有问题吗?为什么没有结果
delphi吧
全部回复
仅看楼主
level 4
for i:=0 to a-1 do
begin
if(indata[i]=$f5)and(indata[i+1]=$0a)then
begin
if(indata[i+2]=$03)then
begin
for d:=i to a-2000 do
begin
if (indata[d
+3
]=$fa)and(indata[d+4]=$00) then
begin
y1:=indata[d+5]*256+indata[d+6];
y11:=FormatFloat('00.000',y1);
if TryStrToFloat(y11,c1) then
begin
iplot1.channel[0].AddXY(j/h,c1);
end;
inc(j);
end
else
if (indata[d+3]=$C0)and(indata[d+4]=$00)then
begin
y2:=indata[d+1];
y3:=indata[d+2];
y22:=FormatFloat('00.000',y2);
y33:=FormatFloat('00.000',y3);
memo2.Lines.Add(y22);
memo3.Lines.Add(y33);
end;
end;
end;
end
else
if(indata[i]=$f5)and(indata[i+1]=$0b)then
begin
if(indata[i+2]=$02)then
begin
for c:=i to a-1 do
begin
if (indata[c+3]=$fb)and(indata[c+4]=$00) then
begin
y4:=indata[c+5];
y44:=FormatFloat('00.000',y4);
if TryStrToFloat(y44,c2) then
begin
iplot2.channel[0].AddXY(j/h,c2);
end;
inc(j);
end
else
if (indata[c+3]=$C0)and(indata[c+4]=$00)then
begin
y5:=indata[c+1];
y6:=indata[c+2];
y55:=FormatFloat('00.000',y5);
y66:=FormatFloat('00.000',y6);
memo4.Lines.Add(y55);
memo5.Lines.Add(y66);
end;
end;
end;
end;
end;
end;
2017年02月20日 05点02分 1
level 11
这么看好像没问题,你最好自己单步调试一下,看看每一步的局部变量是不是都正常。
2017年02月20日 22点02分 2
嗯 好的 为什么老是会出现out of memory呢?
2017年02月21日 00点02分
回复 杰克奥维奇 :内存炸了?你看看索引上限会不会超过了可调用的内存上限,如果是64位下跑32位程序,可用的是3g多一点。不过应该不会吧……不敢想象这个错误。
2017年02月21日 23点02分
@天道玄虚 的确是内存炸了
2017年02月22日 05点02分
@天道玄虚 大神,如何提取一个包里面的每个帧后面的数据,比如f5 0b 03 fa _ _ _ fa _ _ _ fa _ _ _.........fa _ _ _c0 00 (其中f5 ob o3是包头,co oo是包尾,fa是每个帧头,如何提取出来每个帧后面的划线的三个数据),最近在做课程设计,研究一个月了,这些东西还是不会[泪]
2017年02月22日 08点02分
1