Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.01.2013, 13:11
Pcrepair
 
Сообщения: n/a
По умолчанию Проблемы с передачей параметров в поток через TStringList

Добрый день. Есть вариант передачи параметров через string

Код:
unit Unit1;
var
  Form1: TForm1;
implementation
{$R *.dfm}
uses uLoadPage, uGlobalVar;
(*-----Запуск процесса многопотокой закачки страниц*)
procedure TForm1.Button6Click(Sender: TObject);
var
StrLst:TStringList;
Str:string;
begin
  StrLst:=TStringList.Create;
    StrLst.Text:=Memo2.Text; (*Передаем строки с УРЛ в Перем(аналог части Арр)*)
    Str:=StrLst.Text; (*переносим Список в Строка*)
    StartLoadTHreads(Str); (*Вызов ПРОЦ по запуску потоков закачки страниц*)
  FreeAndNil(StrLst);
end;
++++++++++++++++++++++++++++++++++++++
unit uLoadPage;
interface
uses Classes, Generics.Collections, SysUtils;
Procedure StartLoadTHreads(ListOfUrls:string);

implementation
uses uGlobalVar, uStartTHreadLoader, uThreadLoader;
(*  03.01.2013  Процедура запуска загрузки страниц в потоке*)
Procedure StartLoadTHreads(ListOfUrls:string);
var THread:TStartTHreadLoader;
begin
  THread:=TStartTHreadLoader.Create;
  THread.UrlList:=ListOfUrls; (*передача списка УРЛ в поток*)
  THread.Start;
end;
++++++++++++++++++++++++++++++++++++++
unit uStartTHreadLoader;
interface
  uses Classes, SyncObjs, SysUtils, Generics.Collections;
type
  TStartTHreadLoader = class(TThread)
    private
      FUrlList:string;
    protected
      procedure Execute; override;
      Procedure BeginLoadTHreads(StrListOfUrls:TStringList);
    public
      constructor Create;
      destructor Destroy; override;
      property UrlList:string read FUrlList write FUrlList;
  end;

implementation
uses Unit1, uLoadPage, uGlobalVar;

constructor TStartTHreadLoader.Create;
begin
  inherited Create(True); (*Поток создаем в состоянии «Приостановлен»*)
  FreeOnTerminate := True; (* Поток освободит ресурсы при окончании работы*)
  Self.Priority := tpNormal;
end;

destructor TStartTHreadLoader.Destroy;
begin
  inherited Destroy; (*уточнить, точно это нужно?*)
end;

procedure TStartTHreadLoader.Execute;
var StrLst:TStringList;
begin
  StrLst:=TStringList.Create;
  StrLst.Text:=UrlList; (*восстановление списка из строки*)
    try
      BeginLoadTHreads(StrLst); (*передача спика с УРЛ в ПРОЦ*)
    finally
      FreeAndNil(StrLst);
    end;
end;

Procedure TStartTHreadLoader.BeginLoadTHreads(StrListOfUrls:TStringList);
begin
  //тут много всего, но все работает
end;
end.
+++++++++++++++++++++++++++++++++++
в общем все работает, но приходится вначале СПИСОК переместить в строку, затем, в TStartTHreadLoader.Execute все назад возвращать.
Внимание!! Вопрос: можно ли обойтись без усложнения? без использования string. и как именно это сделать
вообще пробовал вместо string использовать TStringList, но почемуто туда не перемещались данные(строки) ПЕРЕМ всегда была пустой. какой то косяк от то что TStringList объект.
Ответить с цитированием
Этот пользователь сказал Спасибо за это полезное сообщение:
OTVET (18.01.2013)
  #2  
Старый 04.01.2013, 13:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

передай в конструктор TStringList и в нем сделай Assign полю потока.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025