作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个(Delphi XE2)VCL应用程序,其中包含一个对象TDownloadUrl(VCL.ExtActns)来检查多个网页,所以我想知道FireMonkey中是否有等效的对象,因为我想利用这个新的丰富功能平台。
使用线程的 Firemonkey 应用程序演示将不胜感激。提前致谢。
最佳答案
FireMonkey 尚不存在操作。
顺便说一句,您可以使用如下代码创建相同的行为:
IdHTTP1: TIdHTTP;
...
procedure TForm2.MenuItem1Click(Sender: TObject);
const
FILENAME = 'C:\Users\Whiler\Desktop\test.htm';
URL = 'http://stackoverflow.com/questions/7491389/firemonkey-and-tdownloadurl';
var
// sSource: string;
fsSource: TFileStream;
begin
if FileExists(FILENAME) then
begin
fsSource := TFileStream.Create(FILENAME, fmOpenWrite);
end
else
begin
fsSource := TFileStream.Create(FILENAME, fmCreate);
end;
try
IdHTTP1.Get(URL, fsSource);
finally
fsSource.Free;
end;
// sSource := IdHTTP1.Get(URL);
end;
如果您只需要内存中的源代码,注释行可以替换其他行...
<小时/><小时/>如果你想使用线程,你可以这样管理它:
unit Unit2;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, FMX.Menus;
type
TDownloadThread = class(TThread)
private
idDownloader: TIdHTTP;
FFileName : string;
FURL : string;
protected
procedure Execute; override;
procedure Finished;
public
constructor Create(const sURL: string; const sFileName: string);
destructor Destroy; override;
end;
type
TForm2 = class(TForm)
MenuBar1: TMenuBar;
MenuItem1: TMenuItem;
procedure MenuItem1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm2.MenuItem1Click(Sender: TObject);
const
FILENAME = 'C:\Users\Whiler\Desktop\test.htm';
URL = 'http://stackoverflow.com/questions/7491389/firemonkey-and-tdownloadurl';
var
// sSource: string;
fsSource: TFileStream;
begin
TDownloadThread.Create(URL, FILENAME).Start;
end;
{ TDownloadThread }
constructor TDownloadThread.Create(const sURL, sFileName: string);
begin
inherited Create(true);
idDownloader := TIdHTTP.Create(nil);
FFileName := sFileName;
FURL := sURL;
FreeOnTerminate := True;
end;
destructor TDownloadThread.Destroy;
begin
idDownloader.Free;
inherited;
end;
procedure TDownloadThread.Execute;
var
// sSource: string;
fsSource: TFileStream;
begin
inherited;
if FileExists(FFileName) then
begin
fsSource := TFileStream.Create(FFileName, fmOpenWrite);
end
else
begin
fsSource := TFileStream.Create(FFileName, fmCreate);
end;
try
idDownloader.Get(FURL, fsSource);
finally
fsSource.Free;
end;
Synchronize(Finished);
end;
procedure TDownloadThread.Finished;
begin
// replace by whatever you need
ShowMessage(FURL + ' has been downloaded!');
end;
end.
关于delphi - Firemonkey 和 TDownloadUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7491389/
我有一个(Delphi XE2)VCL应用程序,其中包含一个对象TDownloadUrl(VCL.ExtActns)来检查多个网页,所以我想知道FireMonkey中是否有等效的对象,因为我想利用这个
我一直在尝试通过 TDownloadURL 类创建 (TFileStream) PDF,但在从 URL 获取文件/流时确实遇到了麻烦,特别是如果 URL 是 HTTPS。 我不确定我是否清楚,但我将发
我一直在测试一些使用 TDownloadUrl 保存网页的示例,这真的很棒,但我发现某些网页存在一些问题,这些网页无法访问真实内容,因为它们需要启动 session 或设置 cookie之前,所以我有
我是一名优秀的程序员,十分优秀!