Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 14:02   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Замена указателей на Локал.Перем при работе функции в потоке

Добрый день. есть код загрузчика, использующий указатели:

Код:
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;
Внимание! Вопрос:
- какой вариант функции предпочтительнее для использования в потоке (многопоточная загрузка страниц), учитывая использование памяти.
- не будет ли в первом варианте вероятности использования одних и тех же сегментов памяти разными потоками
Pcrepair вне форума Ответить с цитированием
Старый 17.01.2013, 14:16   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

http://www.delphimaster.ru/cgi-bin/f...358417243&n=18
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 17.01.2013 в 14:30.
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе функции вызванной из SWITCHa Playa-RC Общие вопросы C/C++ 3 21.09.2012 13:03
Оишбка в потоке при работе с ADO MyIE БД в Delphi 7 07.07.2011 23:14
Перем-е ко-во парам-в Lucky777 Помощь студентам 2 08.06.2011 09:47
процедуры и функции при работе с массивами irina belka Помощь студентам 1 12.12.2010 16:33