procedure TFcomm.commsysReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
var
data:array [1..500]of byte;
begin
move(Buffer^,pbyte(@data)^,Bufferlength);
end;以上程序运转正常!可以读出数据,修改为动态数组,程序保内存错误!procedure TFcomm.commsysReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
var
data:array of byte;
begin
SetLength(data,BufferLength);
move(Buffer^,pbyte(@data)^,Bufferlength);
end;请高手不吝赐教!
var
data:array [1..500]of byte;
begin
move(Buffer^,pbyte(@data)^,Bufferlength);
end;以上程序运转正常!可以读出数据,修改为动态数组,程序保内存错误!procedure TFcomm.commsysReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
var
data:array of byte;
begin
SetLength(data,BufferLength);
move(Buffer^,pbyte(@data)^,Bufferlength);
end;请高手不吝赐教!
move(Buffer^,pbyte(@data[0])^,Bufferlength); @data[0]是动态数组的堆起始地址
@data是一个间接栈地址
你这样指可能会发生AV错误,即试图写入一个未经允许写入的地址,肯定会挂的。
你的程序报的错误到底是什么?溢出还是非法访存或非法写入