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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.12.2010, 14:28
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию Как работают с переменными в потоках?

А как работают с переменными в потоках? Допустим многопоточный постер, для постинга нужна инфа из тела страницы. Обычно - выдираю её в переменную и потом использую. Но ведь при мультипоточном постинге нужно столько таких переменных как и количество потоков? Или нет?
Ответить с цитированием
  #2  
Старый 11.12.2010, 14:31
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Код:
type
  TPoster = class(TThread)
  private
    Post: string;
  protected
    procedure Execute; override;
  end;
Ответить с цитированием
  #3  
Старый 11.12.2010, 14:54
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Спасибо!
Ответить с цитированием
  #4  
Старый 11.12.2010, 15:06
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну если потоки только читают значение из переменной, то можно обойтись и одной. а если еще и изменяют, то есть несколько способов синхронизации. в данном случае самый простой использовать критическую секцию, имхо.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 11.12.2010, 18:05
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Хорошо. А вот такой вопрос. Есть несколько функций. Как их заставить работать в потоке?


Пробую так:
Код:
 TNewThread = class(TThread)
  private
...

    protected
    procedure Execute; override;
  public
    procedure Sync;
    function ParseSid(s:string):string;
    function ParseLink(s:string):string;
    function ParseReload(s:string):string;
    constructor Create(CreateSuspended: Boolean);
  end;

Выдаёт ошибку:
Incompatible types: 'TComponent' and 'TNewThread'

Ошибки возникают на строках:
Reg := TRegExp.Create(Self);
Ответить с цитированием
  #6  
Старый 11.12.2010, 19:08
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

-вызывать их в методе Execute
-смотреть конструктор класса TRegExp. могу лишь предположить (TRegExp не знаю такого) что:
TRegExp = class(TComponent)
в то время как:
TThread = class(TObject)
ну и тогда:
Reg := TRegExp.Create(Form1);
ну или как там
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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