14

Delphi (XE5、Firemonkey) を使用して、Android デバイスにファイルをローカルに保存するにはどうすればよいですか?

次のような単純なもの

  Memo.Lines.SaveToFile('test.txt')

動作しないようです。次のエラー メッセージが表示されます。

「ファイル "/test.txt" を作成できません。ディレクトリではありません。」

4

4 に答える 4

11

System.SysUtils.PathDelimを使用する代わりに、

System.IOUtils.TPath.Combine(System.IOUtils.tpath.getdocumentspath,'test.txt');

CombineWindows\と Linuxのどちらかを選択/

System.IOUtilsTpath のイニシャルが他にもある可能性があるため、uses 句の setup ではなく、この行で使用する必要があります。

于 2013-11-23T12:25:40.213 に答える
2

私のデバイス (そしておそらくすべての Android デバイス?) で、GetHomePath は誤って /storage/emulated/0/... を提供しますが、USB 経由で Wi​​ndows エクスプローラーに表示されるストレージにアクセスするには /storage/sdcard0/... が必要です。

したがって、ファイルへのフル パスは「/storage/sdcard0/Android/data/com.embarcadero.(my app name)/files/」のようになります。

おそらく、プラグイン SD カードがある場合、これは sdcard1 か何かである可能性があります。

次のようなコードを使用して、デバイスのストレージ フォルダーの内容を一覧表示できます。

  P := '/storage/';
  if (FindFirst(P + '*', faAnyFile, Sr) = 0) then
  repeat
    Memo1.Lines.Add(Sr.Name);
  until (FindNext(Sr) <> 0);
  FindClose(Sr);

私のデバイスでは、これは私に与えます:

sdcard0 USB エミュレート

次に、サブフォルダーを探索するときに S を変更します

ファイル フォルダーは、再コンパイルしてデプロイするたびに空になることに注意してください。

于 2014-02-08T12:36:30.053 に答える