[Delphi] Как узнать номер потока?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
[Delphi] Как узнать номер потока? - 2010-12-03 06:56:39.786666
|
|
|
GaMeSTeR_04reg
Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
|
Как узнать номер потока потоки запускаю вот так var Form1: TForm1; tid:array[1..999] of integer; implementation {$R *.dfm} procedure ThreadFunc; var i:integer; begin for i:=1 to 1000 do form1.label1.caption:=inttostr(i); end; procedure TForm1.Button1Click(Sender: TObject); var id:longword; n:integer; begin t:=strtoint(edit1.Text); for n:=1 to t do tid[n]:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id); end; Нужно чтобы поток знал свой номер например showmessge('#'+НОМЕР ПОТОКА+': делаю ……')
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-03 14:08:20.610000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
http://msdn.microsoft.com/en-us/library/ms683183(VS.85).aspx
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-03 15:42:51.846666
|
|
|
GaMeSTeR_04reg
Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
|
Спасибо но это функция дает мне номер такого вида 1972 а надо 1 2 3 и тд. Я при запуске ведь пронумировываю потоки но как узнать номер из потока?
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-03 16:21:14.030000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: GaMeSTeR_04reg Я при запуске ведь пронумировываю потоки но как узнать номер из потока? Чего чего? Где это и что ты нумеруешь?
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-03 19:43:54.570000
|
|
|
GaMeSTeR_04reg
Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
|
Ну вот каждому потоку присваивается идентификатор for n:=1 to t do tid[n]:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id);
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-03 20:50:27.196666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Ты сохранил кучу указателей на поток. А последний параметр при создании,кстати quote:
lpThreadId [out, optional] A pointer to a variable that receives the thread identifier. If this parameter is NULL, the thread identifier is not returned Тот самый Id, который можно узнать функцией. Можешь сохранить их, занумеровав, и сверять.
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-04 00:45:04.333333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: GaMeSTeR_04reg Ну вот каждому потоку присваивается идентификатор for n:=1 to t do tid[n]:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id); Эмм… Поясни выделенное? Насколько мне известно, в дэлфи что-то присвоить можно только переменной или свойству. А что ты понимаешь под "присвоить потоку" я не догадываюсь.
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-04 08:39:17.870000
|
|
|
GaMeSTeR_04reg
Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
|
Ну это я образно
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-04 09:00:51.236666
|
|
|
GaMeSTeR_04reg
Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
|
Всем спасибо!! Сделал так var Form1: TForm1; TThread:TStringList; implementation {$R *.dfm} var Thread:integer; begin Thread:=TThread.Add(inttostr(GetCurrentThreadId)); showmessage(inttostr(Thread+1)+' - Close'); end;
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-04 12:31:37.286666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
А зачем +1 ?
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-04 17:23:36.043333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Что за бред?
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-04 22:25:53.846666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Эээ….Чувак, сохраняй ID,говорю же. …или тебе вот это и нужно было?
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-09 15:24:17.466666
|
|
|
WestSide
Сообщений: 23
Оценки: 0
Присоединился: 2010-11-11 20:55:40.880000
|
Можно например так: quote:
procedure proc(me:Integer); begin Form1.Memo1.Lines.Add('Thread№'+IntToStr(me)); end; в кнопку quote:
for b:=1 to StrToInt(Form1.Edit1.Text) do begin sleep(11); Thread := beginthread(nil, 0, Addr(proc), Pointer(b), 0, id); {тут главное Pointer b, т.е передаю порядковый номер потока} end;
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-09 23:25:28.570000
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
quote:
Thread := beginthread(nil, 0, Addr(proc), Pointer(b), 0, id); {тут главное Pointer b, т.е передаю порядковый номер потока} Ты вообще в спраке читал,чт это за параметр, который ты "передаешь" ?))
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-14 11:12:42.526666
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
А вот если бы юзал TThread то просто добавил бы поле/свойство в наследника и присваивал при создании. Делов-то. // а хотя чего это я туплю, хакеры же юзают только WinAPI!!!111
|
|
|
RE: [Delphi] Как узнать номер потока? - 2010-12-16 18:59:17.500000
|
|
|
WestSide
Сообщений: 23
Оценки: 0
Присоединился: 2010-11-11 20:55:40.880000
|
quote:
ORIGINAL: Genco quote:
Thread := beginthread(nil, 0, Addr(proc), Pointer(b), 0, id); {тут главное Pointer b, т.е передаю порядковый номер потока} Ты вообще в спраке читал,чт это за параметр, который ты "передаешь" ?)) Если честно нет, код работает несмотря на кривизну, и мне этого хватает.
|
|
|
|
|