Indy(idHTTP)を使用してインターネットからEXEファイルをダウンロードしていますが、memorystreamまたはfilestreamを使用してディスクに保存できますが、実際には違いはありますかファイルの結果構造に?)。私はまだこの答えを見つけることができませんでした。私がやっているものをシミュレートするために、2つのシンプルな機能であるが、ここでDelphi - MemoryStreamまたはFileStream
:
あなたの専門家は、1つまたは他のタイプ(MemoryStreamをまたはファイルストリーム)を使用して、何を考え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;
? 1つまたは他のタイプを使用しているときにEXEファイルの構造に違いはありますか?どのようなタイプが推奨されますか?
ありがとうございました!良い週末を!
'TMemoryStream'は'内部的に使用していますTFileStream'をファイルに保存する( 'SaveToFile'メソッド用)ので、答えはとても簡単です。' TFileStream'を使用してください。 – TLama
TFileStreamの代わりにTMemoryStreamを使う理由は2つあります。例外が発生した場合のファイルシステムのクリーンアップを回避し、ファイルに保存する前にいくつかの操作を行う必要があります。 – bummi
あなたの無慈悲な使い方は 'と'私を怖がらせる。私はそれをやめることをお勧めしたいと思います。 –