var
f:TextFile;
i:Integer;
sTextName,sText:String;
begin
 ////////////////////////////////////////////////////////////////////////////
 if  (Listbox1.ItemIndex <> 1 )  then
    begin
      for i := 0 to  Listbox1.Items.Count-1 do      begin
      sTextName:=ListBox1.Items.Strings[i];
      if FileExists(sTextName) then
       AssignFile(f,sTextName);  //  建立文件连接
      Reset(f);      while not Eof(f) do
      begin
      ReadLn(f,sText);//开始读文件中的数据   整行读取
      RichEdit1.Lines.Append(sText);  //输出数据到文本
      end;
      CloseFile(f);   //关闭读完的文件
    end;
  end;
 ////////////////////////////////////////////////////////////////////////////end;end.

解决方案 »

  1.   

    if (Listbox1.ItemIndex <> 1 ) then
    //等于1为什么不行?
    //sTextName是否包含了扩展名?如果没有,前一句改成:
    sTextName:=trim(ListBox1.Items.Strings[i])+'.txt';
      

  2.   

    if (Listbox1.ItemIndex <> -1 ) then 这句是这样的
    ListBox1.Items.Strings[i]//列表框的显示300.txt
    我在列表框已经成功提取到300.txt  400.txt。了我想自动循环逐个列表框里的文件名,然后逐个把相应的文件内容自动添加到RichEdit1显示
      

  3.   

    因你文件名中不包含文件的路径,所以这些文件必须放在与程序同一目录下才可以。否则你可如下做,将文件所在路径加上:
    sTextName:='C:\Test\'+ ListBox1.Items.Strings[i];
      

  4.   

     ListBox1组件里的文件名列表是用OpenDialog1组件打开同一个文件夹里的所有文本文件采集过来的,我将sTextName字符串变量=ListBox1.Items.Strings[i];好像思路没错啊,如果不用自动循环,每次选择列表中的一个文件名,则可以将从ListBox1选择到的文件名,将相应的文件内容添加到RichEdit1中显示,问题文件很多的时候,每次都要选择,很麻烦,所以我想通过循环语句依次读取ListBox1中的文件名列表,将每次读到的文件相应写到RichEdit1显示,不用那么麻烦,说到底就是遍历同一个文件夹里所有文本文件的内容
      

  5.   

    那你可以先用一個變量保存路徑,然後:
    sTextName := PathName+ListBox1.Items.Strings[i];