Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

[Delphi] Как узнать номер потока?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> [Delphi] Как узнать номер потока?
Имя
Сообщение << Старые топики   Новые топики >>
[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('#'+НОМЕР ПОТОКА+': делаю ……')
Post #: 1
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
Post #: 2
RE: [Delphi] Как узнать номер потока? - 2010-12-03 15:42:51.846666   
GaMeSTeR_04reg

Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
Спасибо но это функция дает мне номер такого вида 1972 а надо 1 2 3 и тд.
Я при запуске ведь пронумировываю потоки но как узнать номер из потока?
Post #: 3
RE: [Delphi] Как узнать номер потока? - 2010-12-03 16:21:14.030000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: GaMeSTeR_04reg
Я при запуске ведь пронумировываю потоки но как узнать номер из потока?

Чего чего? Где это и что ты нумеруешь?
Post #: 4
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);
Post #: 5
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, который можно узнать функцией. Можешь сохранить их, занумеровав, и сверять.
Post #: 6
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);

Эмм… Поясни выделенное? Насколько мне известно, в дэлфи что-то присвоить можно только переменной или свойству. А что ты понимаешь под "присвоить потоку" я не догадываюсь.
Post #: 7
RE: [Delphi] Как узнать номер потока? - 2010-12-04 08:39:17.870000   
GaMeSTeR_04reg

Сообщений: 69
Оценки: 0
Присоединился: 2010-11-27 18:15:55.573333
Ну это я образно
Post #: 8
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;
Post #: 9
RE: [Delphi] Как узнать номер потока? - 2010-12-04 12:31:37.286666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
А зачем +1 ?
Post #: 10
RE: [Delphi] Как узнать номер потока? - 2010-12-04 17:23:36.043333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Что за бред?
Post #: 11
RE: [Delphi] Как узнать номер потока? - 2010-12-04 22:25:53.846666   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
Эээ….Чувак, сохраняй ID,говорю же. …или тебе вот это и нужно было?
Post #: 12
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;
Post #: 13
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, т.е передаю порядковый номер потока}

Ты вообще в спраке читал,чт это за параметр, который ты "передаешь" ?))
Post #: 14
RE: [Delphi] Как узнать номер потока? - 2010-12-14 11:12:42.526666   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
А вот если бы юзал TThread то просто добавил бы поле/свойство в наследника  и присваивал при создании. Делов-то.

// а хотя чего это я туплю, хакеры же юзают только WinAPI!!!111
Post #: 15
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, т.е передаю порядковый номер потока}

Ты вообще в спраке читал,чт это за параметр, который ты "передаешь" ?))

Если честно нет, код работает несмотря на кривизну, и мне этого хватает.
Post #: 16
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> [Delphi] Как узнать номер потока?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.