好像一次最多只能打开2000多个文件,如果文件数量过多则不能全部打开。

解决方案 »

  1.   

    跟文件名的大小没关系,用opendialog只是取文件列表,但是opendialog的files的列表长度只能到2000多。
      

  2.   


    再次缩短文件名所用字符数、路径字符数,生成5000个文件,结果返回 $FFF 个文件名,即 4095 个
      

  3.   

    可能是吧,测试一个这个?var
      I: Integer;
      s: string;
    begin
      if OpenDialog1.Execute then
      begin
        ShowMessage(IntToStr(OpenDialog1.Files.Count)); //我的测试:3080
        s :='';
        for I := 0 to OpenDialog1.Files.Count - 1 do
        begin
          s := s + OpenDialog1.Files[i];
        end;
        ShowMessage(IntToStr(Length(s)));  //我的测试:48166
      end;
    end;
      

  4.   

    研究一下Dialogs单元的function TOpenDialog.DoExecute(Func: Pointer)方法或许能找到答案
    这个方法太长了, 我看不懂......
      

  5.   

    用程序往enDialog1.Files里添加列表 没有问题,看来问题就出在OpenDialog1.Execute 里了。
      

  6.   

    现在的问题不是建立文件,文件是已经存在的,问题是如何用OpenDialog打开文件?