这是DLL里的函数声明:Function ReadStreamData(const hChannelHandle:HANDLE;var DataBuf;var Length:DWORD;var FrameType:TFrameType_t):Integer;stdcall;我的程序里是这么用的procedure TForm1.OnDataRead(var Message: TMessage);
var
cn:Integer;
Length:DWORD;
DataBuffer:array[0..500000-1] of Byte;
ft:TFrameType_t;
begin
cn:=Message.WParam;
size:=Message.LParam;
Length:=500000;
ReadStreamData(ChannelHND[cn],DataBuffer,Length,ft);
if Length <> 0 then
Memo1.Lines.Add(IntToStr(Length));
end;非常奇怪,每次Length都是0.
如果把最后一句换成;
Memo1.Lines.Add('');
放一个断点在那这句上,可以看到Length都正常,不为0,谁知道为什么???
var
cn:Integer;
Length:DWORD;
DataBuffer:array[0..500000-1] of Byte;
ft:TFrameType_t;
begin
cn:=Message.WParam;
size:=Message.LParam;
Length:=500000;
ReadStreamData(ChannelHND[cn],DataBuffer,Length,ft);
if Length <> 0 then
Memo1.Lines.Add(IntToStr(Length));
end;非常奇怪,每次Length都是0.
如果把最后一句换成;
Memo1.Lines.Add('');
放一个断点在那这句上,可以看到Length都正常,不为0,谁知道为什么???
if Length <> 0 then
Memo1.Lines.Add(IntToStr(Length));
可能等效于
Memo1.Lines.Add(IntToStr(Length('')));了