нужно сделать get-запрос, а результат сохранить в файл.
А проблема такая:
если делать всё в главной форме - всё работает. Если я процедуру получения страницы запихиваю в отдельный поток - программа крашится, ссылаясь на строку в модуле IdHTTP:
- Код: Выделить всё
DoRequest(Id_HTTPMethodGet, AURL, nil, AResponseContent, AIgnoreReplies);
Если запускать программу без отладки и попытаться работать с файлом - то будет сообщание что "файл используется". И его размер при этом 0.
Компилятор лазарь, последний на сегодня релиз.
Код программы примерно такой:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, IdHTTP, IdAuthentication;
type
{ TUpdateThread }
TUpdateThread = class(TThread)
IdHTTP1: TIdHTTP;
protected
procedure Execute; override;
procedure Get();
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
myfile: textfile;
updater:TUpdateThread;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
updater:=TUpdateThread.Create(True);
updater.FreeOnTerminate:=True;
updater.Resume;
end;
procedure TUpdateThread.Execute;
begin
Get();
end;
procedure TUpdateThread.Get();
var s:string;
begin
s:= idHTTP1.Get('http://ya.ru');
assignfile(myfile, 'upd.xml');
rewrite(myfile);
Write(myFile, s);
closefile(myfile);
end;
initialization
{$I Unit1.lrs}
end.
Подскажите где косяк....