procedure TForm1.FormCreate(Sender: TObject);
begin
FileList:=TStringList.create; //生成全局实例 FileList
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FileList.Free; //释放列表
end;procedure TForm1.Action1Execute(Sender: TObject); //打开添加文件
var
i:integer;
begin
if self.OpenDialog1.execute then
FileList.add(Self.OpenDialog1.FileName);
end;//然后我另外有个列表skn,保存皮肤文件用的procedure TForm1.BitBtn7Click(Sender: TObject); //更换皮肤动作
var
skn:TStringList;
sr:TSearchrec;
tmp:string;
i:=integer;
begin
skn:=TStringList.Create;
skn.Clear;
if FindFirst('*.skn',FaAnyFile,sr)=0 then //查找目录下面的皮肤文件,
begin
tmp:=ExtractFileExt(sr.Name);
if Tmp='.skn' then skn.Add(sr.Name); //添加皮肤文件名到skn序列中
end;
while FindNext(sr)=0 do
begin
tmp:=ExtractFileExt(sr.Name);
if Tmp='.skn' then skn.Add(sr.Name);
end;
FindClose(sr);
randomize();
i:=RanDom(skn.count-1); //产生一个随机的皮肤索引号
if FileExists(skn[i]) then self.SkinData1.LoadFromFile(skn[j1]); //装载皮肤
skn.Free;
end; 问题说明:不先使用添加文件动作procedure TForm1.Action1Execute(Sender: TObject);
更换皮肤正常,如果使用按钮先运行Action1那么
skn.count总是等于0,好像不能读取皮肤文件到序列,
i的直会在-1000000 和 +100000的很大一个范围内变化,对应不了皮肤文件的索引了,
虽然if FileExists(skn[i]) then self.SkinData1.LoadFromFile(skn[j1]); 语句多余,但是不判断就会装入出错;加入这个语句,先运行打开文件以后就不能更换皮肤了,还会提示内存冲突;
我声明skn为全局对象一样出错,百思不得其解啊,希望大家指教
请问大家,是不是同时使用2个字符串列表会出错呢?
begin
FileList:=TStringList.create; //生成全局实例 FileList
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FileList.Free; //释放列表
end;procedure TForm1.Action1Execute(Sender: TObject); //打开添加文件
var
i:integer;
begin
if self.OpenDialog1.execute then
FileList.add(Self.OpenDialog1.FileName);
end;//然后我另外有个列表skn,保存皮肤文件用的procedure TForm1.BitBtn7Click(Sender: TObject); //更换皮肤动作
var
skn:TStringList;
sr:TSearchrec;
tmp:string;
i:=integer;
begin
skn:=TStringList.Create;
skn.Clear;
if FindFirst('*.skn',FaAnyFile,sr)=0 then //查找目录下面的皮肤文件,
begin
tmp:=ExtractFileExt(sr.Name);
if Tmp='.skn' then skn.Add(sr.Name); //添加皮肤文件名到skn序列中
end;
while FindNext(sr)=0 do
begin
tmp:=ExtractFileExt(sr.Name);
if Tmp='.skn' then skn.Add(sr.Name);
end;
FindClose(sr);
randomize();
i:=RanDom(skn.count-1); //产生一个随机的皮肤索引号
if FileExists(skn[i]) then self.SkinData1.LoadFromFile(skn[j1]); //装载皮肤
skn.Free;
end; 问题说明:不先使用添加文件动作procedure TForm1.Action1Execute(Sender: TObject);
更换皮肤正常,如果使用按钮先运行Action1那么
skn.count总是等于0,好像不能读取皮肤文件到序列,
i的直会在-1000000 和 +100000的很大一个范围内变化,对应不了皮肤文件的索引了,
虽然if FileExists(skn[i]) then self.SkinData1.LoadFromFile(skn[j1]); 语句多余,但是不判断就会装入出错;加入这个语句,先运行打开文件以后就不能更换皮肤了,还会提示内存冲突;
我声明skn为全局对象一样出错,百思不得其解啊,希望大家指教
请问大家,是不是同时使用2个字符串列表会出错呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货