Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с передачей параметров в поток через TStr, Проблемы с передачей параметров в поток  
:(
    Опции темы
Pcrepair
Дата 4.1.2013, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день. Есть вариант передачи параметров через 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 объект.
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Illusion Dolphin
Дата 4.1.2013, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Если делфи новая, то можно передавать как:
Код

      Items: TArray<string>;
     
      ...
     
      Items := Memo1.Lines.ToStringArray();



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0757 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.