关于stringlist的使用;大家看看我这段程序哪里有问题,给分20分
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个字符串列表会出错呢?
问题点数:20、回复次数:2Top
1 楼budi(http://lysee.oicp.net)回复于 2005-06-04 18:59:14 得分 20
修改OPenDialog的属性,禁止改变工作目录Top
2 楼zhou151420448(我是新手)回复于 2005-06-04 19:54:38 得分 0
谢谢2楼,怎么给你分?
想不通上面编译运行程序,在程序退出的时候会提示内存错,
按照你的方法改了,好像没出现了,我在试验一下Top
相关问题
- 使用resin的,应该把bean程序放在哪里呢?
- 请教!自定义函数怎么使用,加在程序哪里?
- vb.net应用程序使用!
- 一个关于WINDOWS平台下控制台程序中的时钟使用问题,帮忙看看下面程序哪里出错了
- C++ Builder中如何使用Windows 的API函数,哪里有这样的源程序
- 请问哪里有关于使用installshield做安装程序的文章或资料。
- 请问哪里有CS1.5服务器端、客户端的程序以及配置使用方法?
- 请问哪里有《使用Visual Basic和UML开发应用程序》这本书下载
- 哪里有inno setup的使用说明,如何在卸载时也运行某个程序
- 请问在使用多线程程序时,最主要要注意的问题在哪里?如何解决?




