![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() А как работают с переменными в потоках? Допустим многопоточный постер, для постинга нужна инфа из тела страницы. Обычно - выдираю её в переменную и потом использую. Но ведь при мультипоточном постинге нужно столько таких переменных как и количество потоков? Или нет?
|
#2
|
||||
|
||||
![]() Код:
type TPoster = class(TThread) private Post: string; protected procedure Execute; override; end; |
#3
|
|||
|
|||
![]() Спасибо!
![]() |
#4
|
||||
|
||||
![]() ну если потоки только читают значение из переменной, то можно обойтись и одной. а если еще и изменяют, то есть несколько способов синхронизации. в данном случае самый простой использовать критическую секцию, имхо.
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() Хорошо. А вот такой вопрос. Есть несколько функций. Как их заставить работать в потоке?
Пробую так: Код:
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
|
||||
|
||||
![]() -вызывать их в методе Execute
-смотреть конструктор класса TRegExp. могу лишь предположить (TRegExp не знаю такого) что: TRegExp = class(TComponent) в то время как: TThread = class(TObject) ну и тогда: Reg := TRegExp.Create(Form1); ну или как там Пишу программы за еду. __________________ |
#7
|
|||
|
|||
![]() Цитата:
TRegExp - это для регулярок. Находиться в VBScript_RegExp_55_TLB Код:
TRegExpProperties = class(TPersistent) private FServer: TRegExp; function GetDefaultInterface: IRegExp2; constructor Create(AServer: TRegExp); protected function Get_Pattern: WideString; procedure Set_Pattern(const pPattern: WideString); function Get_IgnoreCase: WordBool; procedure Set_IgnoreCase(pIgnoreCase: WordBool); function Get_Global: WordBool; procedure Set_Global(pGlobal: WordBool); function Get_Multiline: WordBool; procedure Set_Multiline(pMultiline: WordBool); public property DefaultInterface: IRegExp2 read GetDefaultInterface; published property Pattern: WideString read Get_Pattern write Set_Pattern; property IgnoreCase: WordBool read Get_IgnoreCase write Set_IgnoreCase; property Global: WordBool read Get_Global write Set_Global; property Multiline: WordBool read Get_Multiline write Set_Multiline; end; UPD. Разобрался. CoInitialize(nil); в начало Execute. ActiveX в Uses Последний раз редактировалось MrDiG, 11.12.2010 в 19:28. |