Я загружаю EXE-файл из Интернета, используя Indy (idHTTP), и я могу использовать поток памяти или поток файлов, чтобы сохранить его на диск, но я действительно не знаю, есть ли между ними какая-либо разница (может быть, в структуре результата файла? ). Я еще не нашел ответа на это.
Где, вот 2 простые функции для имитации того, что я делаю:
Function DownloadMS(FUrl, Dest: String): Boolean;
var
Http: TIdHTTP;
Strm: TMemoryStream;
Begin
Result := False;
Http := TIdHTTP.Create;
Strm := TMemoryStream.Create;
With Http, Strm Do
Try
Try
Get(FUrl, Strm);
If (Size > 0) Then
Begin
Position := 0;
SaveToFile(Dest);
Result := True;
end;
Except
end;
Finally
Strm.Free;
Http.Free;
end;
end;
Function DownloadFS(FUrl, Dest: String): Boolean;
var
Http: TIdHTTP;
Strm: TFileStream;
Begin
Result := False;
Http := TIdHTTP.Create;
Strm := TFileStream.Create(Dest, fmCreate);
With Http, Strm Do
Try
Try
Get(FUrl, Strm);
Result := (Size > 0);
Except
end;
Finally
Strm.Free;
Http.Free;
end;
end;
Что вы, эксперты, думаете об использовании того или иного типа (memorystream или filestream)? Есть ли разница в структуре EXE-файла при использовании того или иного типа? Какой тип рекомендуется?
Спасибо! Хороших выходных!
TMemoryStream
используетTFileStream
для сохранения в файл (для методаSaveToFile
), поэтому ответ довольно прост - используйтеTFileStream
. - person TLama   schedule 04.05.2013with
меня пугает. Я бы рекомендовал вам прекратить это делать. - person David Heffernan   schedule 04.05.2013