- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Cthreads, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
libcurl,unixtype,LazUTF8;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
type
TMyTr = class(TThread)
private
str:UnicodeString;
procedure Show;
protected
procedure Execute; override;
public
Constructor Create(CreateSuspended : boolean);
end;
var
Form1: TForm1;
mytr:Tmytr;
implementation
{$R *.lfm}
{ TForm1 }
Function DoWrite(Ptr : Pointer; Size : size_t; nmemb: size_t; Data : Pointer) : size_t;cdecl;
begin
Result:=TStream(Data).Write(Ptr^,Size*nmemb);
end;
procedure TMyTr.Execute;
var
f : TFileStream;
URL : Pchar = 'https://www.google.ru/';
Curl : pCurl;
data:TMemoryStream;
code:CURLcode;
list:Pcurl_slist = nil;
begin
data:=TMemoryStream.Create();
Try
Curl:= curl_easy_init;
if Curl<>nil then
begin
curl_easy_setopt(Curl,CURLOPT_URL,[URL]);
curl_easy_setopt(Curl,CURLOPT_TIMEOUT,[5]);
list:=curl_slist_append(list,'Accept: text/html; charset=UTF-8');
list:=curl_slist_append(list,'Accept-Charset: UTF-8');
curl_easy_setopt(Curl,CURLOPT_HTTPHEADER,[list]);
curl_easy_setopt(Curl,CURLOPT_WRITEFUNCTION,[@DoWrite]);
curl_easy_setopt(Curl,CURLOPT_WRITEDATA,[Pointer(data)]);
code := curl_easy_perform(Curl);
curl_easy_cleanup(Curl);
SetString(str, data.Memory, data.Size);
Synchronize(@show);
end;
Finally
data.Free;
end;
Terminate;
end;
constructor TMyTr.Create(CreateSuspended : boolean);
begin
FreeOnTerminate := True;
inherited Create(CreateSuspended);
end;
procedure TMyTr.Show;
begin
// Form1.Memo1.Text := UTF8Encode(str);
// Form1.Memo1.Text := UTF8Decode(str);
// Form1.Memo1.Text := Utf16ToUtf8(str);
// Form1.Memo1.Text := Utf8ToSys(str);
Form1.Memo1.Text := Utf8ToAnsi(str);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
mytr := Tmytr.Create(false);
end;
end.
Гугл меня извлек уже. Видимо я нуб

Не могу страницу перекодить, помогите