![]() |
|
|
Регистрация | << Правила форума >> | 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; Внимание! Вопрос: - какой вариант функции предпочтительнее для использования в потоке (многопоточная загрузка страниц), учитывая использование памяти. - не будет ли в первом варианте вероятности использования одних и тех же сегментов памяти разными потоками |