标题菜鸟捉虫(31)
栏目软件世界
发布2001年31期
上期正确答案:
要找到List1与List2中相同的城市名称,必须将List1的每一项与List2中的所有项进行比较,由于List1与List2中的城市名不可能完全相对应,所以第二个循环中List1.List(j)=List2.List(j)这样的作法不对,应该改成List1.List(i)=List2.List(j),这样就可以将List1的每一项与List2中的所有项进行比较,就不会遗漏相同的了。在程序中,还有一处错误在“MsgBox( “找到” + k + “个相同的城市!”, vbOKOnly + vbInformation,“结果”)”这一句中,错误的原因就是K是一个整型变量,要将值显示在MsgBox中,必须将这个类型转换成字符型才行,因此,将k写成Str(k)就可以了。
获奖名单:
江苏 陈震宇 山西 何 彬
辽宁 吴海正 四川 王中渝
重庆 任宏志
以上幸运读者将获得电脑报最新出版的《电脑报系列配套光盘》杂志一套。
本期题目:
这是一个关于Delphi的题目,要求列出指定目录中的所有文件(包括文件夹)。加入一个ListBox控件及一个Button控件,并将Button的Caption改为“列出所有文件”。实现这一功能的源代码如下:
function ListAllFiles:Integer;stdcall;
var
SearchRec: TSearchRec;
ReValue:Integer;
begin
ListBox1.Clear;
ReValue:=FindFirst('C:\*.*',faAnyFile,SearchRec);
While ReValue=0 Do
Begin
if SearchRec.Size =0 then
begin
if SearchRec.Attr >2 then //如果是文件夹将加上[]表示是文件夹
ListBox1.Items.Add('['+SearchRec.Name+']')
else
ListBox1.Items.Add(SearchRec.Name+'文件大小:'+IntToStr(SearchRec.Size)+'KB');
end
else
ListBox2.Items.AddSearchRec.Name + '文件大小:' + IntToStr(SearchRec.Size)+ ' KB');
FindNext(SearchRec);
End;
Result:=1;
end;
procedure TForm1.Button1Click(Sender:TObject);
begin
ListAllFiles;
end;