打开文件的控件(opendialog)用普通的程序可以。但用active取路径会发生错误。
程序:
procedure TForm1.Button2Click(Sender: TObject);
begin
opendialog1.Execute;
showmessage(opendialog1.FileName);
end;
弹出的是乱码。

解决方案 »

  1.   

    除非你运行程序之前设置好啦opendialog1的路径,文件名。
      

  2.   

    奇怪呀,我用普通程序是好的,但用active就是不行。我同事用jbuilder编是好的。
      

  3.   

    我也遇到了这个问题,和3721有关,气的我 没办法用API直接调用就好了。例子如下:
    var
      info:TOpenInfo;
      lpstrFile:array[0..1000] of char;
      lpstrFileTitle:array[0..1000] of char;
      lpstrFilter:array[0..50] of char;
      S:String;
    begin
      FillChar(lpstrFile,SizeOf(lpstrFile),0);
      FillChar(lpstrFileTitle,SizeOf(lpstrFileTitle),0);
      FillChar(lpstrFilter,SizeOf(lpstrFilter),0);
      S:='文本文件';//注意这里
      Move(S[1],lpstrFilter,Length(S));
      S:='*.TXT';//注意这里
      Move(S[1],lpstrFilter[9],Length(S));  info.lStructSize:=sizeof(info);
      info.hWndOwner:=handle;
      info.hInstance:=hinstance;
      info.lpstrFilter:=lpstrFilter;
      info.lpstrCustomFilter:=nil;
      info.nMaxCustFilter:=0;
      info.nFilterIndex:=1;
      info.lpstrFile:=lpstrFile;
      info.nMaxFile:=SizeOf(lpstrFile);
      info.lpstrFileTitle:=lpstrFileTitle;
      info.nMaxFileTitle:=SizeOf(lpstrFileTitle);
      info.lpstrInitialDir:='c:\';
      info.lpstrTitle:='Open Test';
      info.Flags:=0;//OFN_ENABLESIZING+OFN_EXPLORER;
      info.nFileOffset:=0;
      info.nFileExtension:=0;
      info.lpstrDefExt:='txt';
      info.lCustData:=0;
      info.lpfnHook:=nil;
      info.lpTemplateName:='';
      info.pvReserved:=0;
      info.dwReserved:=0;
      info.FlagsEx:=0;
      try
      if GetOpenFileName(@info) then
          ShowMessage(info.lpstrFile);//文件名称
      except
          caption:=SysErrorMessage(getlasterror);
      end;里面的参数很清楚,应该很容易看懂的。
      

  4.   

    最简单的方法是把delphi的Dialogs的GetFileName的属性改为Result := FFileName;
    ha ha ,很管用