2013-09-25 1 views
0

Я пытаюсь загрузить файл с сервера, таким образом:Delphi скачать файл Android с потоком памяти

var MeS:TMemoryStream; 
begin 
Mes:=TMemoryStream.Create; 
IdFTP1.Connect; 
Mes.Position:=0; 
    try 
    IdFTP1.Get(Mes, 'dolcestilnovo.txt', True, False); 
    finally 
    MeS.Free; 
    IdFTP1.Disconnect; 
    end; 
Memo5.Lines.LoadFromStream(Mes); 
end; 

Я должен показать содержание dolcestilnovo.txt внутри этого Memo5, но у меня есть ошибки на IdFTP1.Get(); метод.

Ошибка: «Нет перегруженной версии« Get », которую можно вызвать с этими параметрами». Что я могу сделать?

Я думал использовать MemoryStream, так как я загружаю его на Android-устройстве.

+1

Просто примечание стороны, вы пытаетесь заполнить записку с содержимым освобожденного потока памяти. –

+0

Как я могу загрузить этот файл? –

+1

Из того, что я вижу, Get (string, TStream, boolean) - это перегрузка для использования здесь. –

ответ

5

Посмотрите на подпись версии TStream из TIdFTP.Get():

procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean = false); overload; 

Смотрите, почему ваш код не соответствует его? Используйте вместо этого:

IdFTP1.Get('dolcestilnovo.txt', Mes, False); 

И не забудьте сбросить TMemoryStream.Position обратно в 0 раз перед вызовом Memo5.Lines.LoadFromStream(Mes) или иначе это не будет ничего загружать.

Попробуйте это:

var 
    MeS: TMemoryStream; 
begin 
    Mes := TMemoryStream.Create; 
    IdFTP1.Connect; 
    try 
    IdFTP1.Get('dolcestilnovo.txt', Mes, False); 
    finally 
    IdFTP1.Disconnect; 
    end; 
    Mes.Position := 0; 
    Memo5.Lines.LoadFromStream(Mes); 
end; 
+0

поэтому, когда я заканчиваю утверждение try-catch, я помещаю Mes.Position: = 0? –

+0

Я обновил свой ответ с помощью фрагмента кода для вас. –

+0

Не нужно ли освобождать поток памяти? –

 Смежные вопросы

  • Нет связанных вопросов^_^