我在程序中定义了如下结构type
PTThreadStruct = ^TThreadStruct;
TThreadStruct = record
MSendBuf :Pointer;
MStream :TMemoryStream;
end;再定义如下动态数组
PRT_ThreadStruct :array of PTThreadStruct; 在窗体打开后
setlength(PRT_ThreadStruct,2)
For i:= 1 to 2 do
begin New(PRT_ThreadStruct[i]);
GetMem(PRT_ThreadStruct[i].MSendBuf ,1024);
PRT_ThreadStruct[i].MStream := TMemoryStream.Create ; end;
在关闭窗体前我对动态组也做了释放,关闭程序时老是提示无效的指针操作
我将动态数组改为
PRT_ThreadStruct :array[1..2] of PTThreadStruct;
程序就不会报错了,请问是什么原因啊?答对马上揭帖
PTThreadStruct = ^TThreadStruct;
TThreadStruct = record
MSendBuf :Pointer;
MStream :TMemoryStream;
end;再定义如下动态数组
PRT_ThreadStruct :array of PTThreadStruct; 在窗体打开后
setlength(PRT_ThreadStruct,2)
For i:= 1 to 2 do
begin New(PRT_ThreadStruct[i]);
GetMem(PRT_ThreadStruct[i].MSendBuf ,1024);
PRT_ThreadStruct[i].MStream := TMemoryStream.Create ; end;
在关闭窗体前我对动态组也做了释放,关闭程序时老是提示无效的指针操作
我将动态数组改为
PRT_ThreadStruct :array[1..2] of PTThreadStruct;
程序就不会报错了,请问是什么原因啊?答对马上揭帖
begin
setlength(PRT_ThreadStruct,2)
For i:= 1 to 2 do
begin New(PRT_ThreadStruct[i]);
GetMem(PRT_ThreadStruct[i].MSendBuf ,1024);
PRT_ThreadStruct[i].MStream := TMemoryStream.Create ; end;end;
procedure TForm1.Button2Click(Sender: TObject);
begin
For i:= 1 to 2 do
begin
freeMem(PRT_ThreadStruct[i].MSendBuf);
PRT_ThreadStruct[i].MStream.free ;
PRT_ThreadStruct[i].MStream:= nil;
Dispose(PRT_ThreadStruct[1]);
PRT_ThreadStruct[1] := nil;
end;
end;
先单击button1,再单击button2,关闭程序,就会报错!
zswangII(伴水清清)你去试试,谢谢了!
type
TThreadStruct = record
MSendBuf :Pointer;
MStream :TMemoryStream;
end;
PTThreadStruct = ^TThreadStruct;
button2中:For i:=high(PRT_ThreadStruct) downto low(PRT_ThreadStruct) do
button1中:For i:= low(PRT_ThreadStruct) to high(PRT_ThreadStruct) do
实际是从0到1
button2中:For i:=high(PRT_ThreadStruct) downto low(PRT_ThreadStruct) do
是从1到0但是我如果将他们改为
for i:=1 to 2
就会报错,难道动态数组只能从0开始?