有一函数如下:
function BigImageCallback( pFirstParameter: Pointer; dwCarID: LongWord;//大图结果回调函数
wImageWidth: Word; wImageHigh: Word; bType: Byte; wSize: Word;
pbImage: Pointer; wImageID: Word; wReserved: Word; wPlateWidth: Word;
wPlateHigh: Word; dwTimeMs: Int64 ): Integer; cdecl;
var
MyResult: ^TResult;
iHigh,item,iSize:integer;
MyStream : TMemoryStream;
BigData:array[1..731000] of byte;
BigData2:array of byte;
strtmp:string;
begin
iSize := 0;
Lock.Acquire;
try
Result := 0;
MyResult := pFirstParameter ;
if (wReserved and $FF00) <> 0 then
begin
iHigh := (wReserved and $00FF);
iHigh := iHigh shl 16;
iSize := wSize + iHigh;
end
else
begin
iSize := wSize;
end; SetLength( BigData2,731000);//设置长度
CopyMemory( BigData2, pbImage,iSize );//pbImageo 数据指针
MyStream := TMemoryStream.Create;
MyStream.Seek(0, soFromBeginning);
item := 0;
MyStream.Write(BigData2, iSize);//这里出错(但如果用BigData,不用SetLength,就没有问题????)
strtmp := 'c:\' + inttostr(dwTimeMs) + inttostr(dwCarID) + '.jpg';
MyStream.SaveToFile(strtmp);
MyStream.Free();
finally
Lock.Release;
end;
end;
function BigImageCallback( pFirstParameter: Pointer; dwCarID: LongWord;//大图结果回调函数
wImageWidth: Word; wImageHigh: Word; bType: Byte; wSize: Word;
pbImage: Pointer; wImageID: Word; wReserved: Word; wPlateWidth: Word;
wPlateHigh: Word; dwTimeMs: Int64 ): Integer; cdecl;
var
MyResult: ^TResult;
iHigh,item,iSize:integer;
MyStream : TMemoryStream;
BigData:array[1..731000] of byte;
BigData2:array of byte;
strtmp:string;
begin
iSize := 0;
Lock.Acquire;
try
Result := 0;
MyResult := pFirstParameter ;
if (wReserved and $FF00) <> 0 then
begin
iHigh := (wReserved and $00FF);
iHigh := iHigh shl 16;
iSize := wSize + iHigh;
end
else
begin
iSize := wSize;
end; SetLength( BigData2,731000);//设置长度
CopyMemory( BigData2, pbImage,iSize );//pbImageo 数据指针
MyStream := TMemoryStream.Create;
MyStream.Seek(0, soFromBeginning);
item := 0;
MyStream.Write(BigData2, iSize);//这里出错(但如果用BigData,不用SetLength,就没有问题????)
strtmp := 'c:\' + inttostr(dwTimeMs) + inttostr(dwCarID) + '.jpg';
MyStream.SaveToFile(strtmp);
MyStream.Free();
finally
Lock.Release;
end;
end;
=============
MyStream.Write((@BigData2[0])^, iSize);//