菜鸟捉虫(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.Add SearchRec.Name + '文件大小:' + IntToStr(SearchRec.Size)+ ' KB');

FindNext(SearchRec);
   End;
   Result:=1;
   end;
   procedure TForm1.Button1Click(Sender:TObject);
   begin
   ListAllFiles;
   end;