0

我想浏览 SD 卡,选择目录和文件并将 txt 文件加载到我由 Delphi XE5 创建的 Android 应用程序中。

有任何标准组件或方法吗?喜欢 OpedFileDialog 吗?

4

2 回答 2

1

Android 上没有对应的 for TOpenFileDialog。它不是操作系统的一部分,并且在面向 Android 时无法从 Component Palette 中获得。

您可以通过在设计器中查看表单,然后检查DialogsComponent Palette 中的选项卡来看到这一点;所有组件都被禁用,这意味着它们不适用于目标平台。将鼠标悬停在其中任何一个上表示它们可用于 Win32、Win64 和 OS X,但不适用于 iOS 或 Android。

您始终可以基于 a TForm(或者更好的TPopup是 a ,它更适合移动设备的典型应用程序流程)构建自己的,使用IOUtils.TPath用于检索目录和文件名的功能。一旦你有了文件名,加载它的功能就很简单了,并且可以通过多种方式使用——这里有一些:

  • TFile.ReadAllLines使用(再次从IOUtils)加载它
  • TStringList.LoadFromFile
  • 使用TFileStream.LoadFromFile
  • 用一个TMemo.Lines.LoadFromFile
于 2013-11-07T16:26:24.393 回答
0

使用TStringList, 与TStringList.loadFromFile(file);

procedure TForm1.Button1Click(Sender: TObject);
var
   TextFile : TStringList;
   FileName : string;
begin

try
  textFile := TStringList.Create;
  try
  {$IFDEF ANDROID}//if the operative system is Android
     FileName := Format('%smyFile.txt',[GetHomePath]);
  {$ENDIF ANDROID}

  {$IFDEF WIN32}
     FileName := Format('%smyFile.txt',[ExtractFilePath(ParamStr(0))]);
  {$ENDIF WIN32}

  if FileExists(FileName) then begin
     textFile.LoadFromFile(FileName); //load the file in TStringList
     showmessage(textfile.Text);//there is the text
  end
  else begin showMessage('File not exists, Create New File');

     TextFile.Text := 'There is a new File (Here the contents)';
     TextFile.SaveToFile(FileName);//create a new file from a TStringList

  end;
  finally
     textFile.Free;
  end;
except
  on E : Exception do ShowMessage('ClassError: '+e.ClassName+#13#13+'Message: '+e.Message);
   end;
end;
于 2013-11-07T16:07:08.713 回答