******有关动态数组清空的问题**********(50分)

  • 主题发起人 主题发起人 todayisthursday
  • 开始时间 开始时间
T

todayisthursday

Unregistered / Unconfirmed
GUEST, unregistred user!
type
//右键菜单结构
TDLLInfo = record
MenuName:string;
FuncName:string;
end;
TArrDLLInfo = array of TDLLInfo;

定义了一个结构
在一个过程中:
procedure XX
var
AA:TArrDLLInfo ;
begin
set(AA,0);//清空
set(AA,3);//结构长度
XXXX//对结构循环赋值
end;
第二次运行后就报'Invalid pointer operation'错了
 
动态数组清空应该用:
FillChar(AA[0], Sizeof(TArrDLLInfo) * Length(AA), 0);
 
SetLength(AA,0);
SetLength(AA,3);
 
FillChar(AA[0], Sizeof(TArrDLLInfo) * Length(AA), 0);
试了,也不行,还是报同样错
 
不是清空出的错
 
Delphi的帮助上说使用SetLength(AA, 0)就可以了
其中AA是你的数组
 
第二次调用时运行到:setlength(AA,0);就报错
 
procedure XX
var
AA:TArrDLLInfo ;
begin
setlength(AA,3);//结构长度
XXXX//对结构循环赋值
setlength(aa,0);//你的AA不是全局声明,用完了马上清空,不要等下一次执行过程才清空
end;
 
我已把AA设成全局,第二次运行SETLENGTH(AA,0)总报错
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
I
回复
0
查看
566
import
I
后退
顶部