2013-09-24 1 views
1

Мне нужно загрузить текстовый файл на мой проект андроида, и поэтому я использовал IdFTP. Это код:Delphi сохранить текстовый файл на Android

Button2.Enabled:=False; 
Label5.Text:='Uploading...'; 

Memo1.Lines.Add(Edit1.Text+':'+ComboBox1.Items.Text); 
Memo1.SaveToFile('filehost.txt'); 

try 
IdFTP1.Connect; 
    // I set the host, password and username 
IdFTP1.Put('filehost.txt'); 
finally 
IdFTP1.Disconnect; 

У меня возникли проблемы, потому что, когда я запустить приложение на моем Samsung (Android 2.3) У меня есть ошибка, которая говорит Cannot create file "/filehost.txt". Not a directory.

Я должен сохранить содержимое этого Memo1 на своем устройстве Android, а затем загрузить его с помощью IdFTP. Как я могу это сделать, избегая этой ошибки?

+0

возможно дубликат [Как сохранить файл на Android? (FireMonkey)] (http://stackoverflow.com/questions/18857936/how-to-save-a-file-on-android-firemonkey) –

ответ

3

Вы не можете писать в корневую папку. Используйте TPath, чтобы найти папку для записи, например, от TPath.GetTempPath() или TPath.GetDocumentsPath().

В качестве альтернативы, не используйте файл вообще. TIdFTP.Put() имеет перегруженную версию, которая загружает TStream вместо файла, например:

var 
    MS: TMemoryStream; 
begin 
    MS := TMemoryStream.Create; 
    try 
    Memo1.Lines.SaveToStream(MS); 
    MS.Position := 0; 
    ... 
    IdFTP1.Put(MS, 'filehost.txt'); 
    ... 
    finally 
    MS.Free; 
    end; 
end;