![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |