如果循环只运行了一次就break了,len当然只会是1.
解决方案 »
- 这样的形式,delphi用QuickRep怎么样做?
- ClientDataSet.Locate 定位的时候遇到一个奇怪的问题
- 如何禁止用户在WebBrowser上选择内容?
- 怎么改变ListView中Item的字体颜色
- WebService的问题,高分求解!
- 我一个基于SQL SERVER2000开发的系统,平时用的好好的,今天出然在保存时跳出来一句“Non-blob column in table required to perform ope
- 客户要求软件能在95、98、2000、XP、ME、NT下都能跑,给个解决方案。
- 菜鸟问题;word/execel 中的vb application 帮助在word的那个地方?
- 请问在何处加分?
- 我是一个Dephi初学者,希望有本好书来看
- delphi 怎么得到窗体上最上层是哪个控件? 随机BringToFront,最后得到哪个在最上层
- 请问那个高手用过TnEmulVT组件?给讲一下。
buf: array[0..255] of char;
len, i, ret: integer;
RetLen: Byte;
p: Pchar;
begin
len := 0;
for i := 0 to 255 do
begin
ret := 0;
if ret >= 0 then
begin
len := len+1; //断点进入这里,观察到len没有递增,永远等于1!要疯了
end
else
Break;
ShowMessage(inttostr(len))
end;改成上述代码,每次循环返回均+1了。说明
ret := LsdMBus_Read(@Buf[i], 1, @RetLen);
ret返回是的值<0 ,认真检查一下代码。
改成上述代码,每次循环返回均+1了。说明
ret := LsdMBus_Read(@Buf[i], 1, @RetLen);
ret返回是的值<0 ,认真检查一下代码。
var
len, i, ret: integer;
RetLen: Byte;
buf: array[0..255] of char;
len := len+1; //断点进入这里,观察到len没有递增,永远等于1!要疯了
从上面看,如果溢出四个字节且BUF的溢出后面的数据是全0,你的len刚好是0,执行一次LsdMBus_Read复位0,所以你的len永远是1,
刚好你的BUF是在栈顶,所以我要你调整变量位置看是不是这个原因,