![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день. есть код загрузчика, использующий указатели:
Код:
function LoadPage(const Url: String): RawByteString;
var
HTTP: TIdHTTP;
HtmlPage: TMemoryStream;
T:TStringList;
begin
T:=TStringList.Create;
HTTP := TIdHTTP.Create(nil);
try
HtmlPage := TMemoryStream.Create;
try
HTTP.HandleRedirects := True;
HTTP.Get(Url, HtmlPage); (*получаем данные в поток памяти*)
(*------------------------------------------*)
SetLength(Result, HtmlPage.Size);
Move(HtmlPage.Memory^, Pointer(Result)^, HtmlPage.Size);
(*------------------------------------------*)
finally
FreeAndNil(HtmlPage);
end;
finally
FreeAndNil(HTTP);
FreeAndNil(T);
end;
end;Код:
function LoadPage(const Url: String): RawByteString;
var
HTTP: TIdHTTP;
HtmlPage: TMemoryStream;
T:TStringList;
begin
T:=TStringList.Create;
HTTP := TIdHTTP.Create(nil);
try
HtmlPage := TMemoryStream.Create;
try
HTTP.HandleRedirects := True;
HTTP.Get(Url, HtmlPage); (*получаем данные в поток памяти*)
(*---------------------------*)
HtmlPage.Position:=0;
T.LoadFromStream(HtmlPage);
Result:=T.Text;
(*---------------------------*)
finally
FreeAndNil(HtmlPage);
end;
finally
FreeAndNil(HTTP);
FreeAndNil(T);
end;
end;Внимание! Вопрос: - какой вариант функции предпочтительнее для использования в потоке (многопоточная загрузка страниц), учитывая использование памяти. - не будет ли в первом варианте вероятности использования одних и тех же сегментов памяти разными потоками |