ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Delphi [Console App + TThread]
  #1  
Старый 19.10.2006, 19:33
qPhoenix
Banned
Регистрация: 15.12.2005
Сообщений: 95
Провел на форуме:
1509352

Репутация: 132
Отправить сообщение для qPhoenix с помощью ICQ
По умолчанию Delphi [Console App + TThread]

Собсно ламерский вопросец - можно ли, и как организовать многопоточность в консольном приложении?

в чем у меня лажа?...:

делаю так:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses Classes;

type
 Thread = class(TThread)
  procedure Execute; override;
 end;

procedure Thread.Execute;
begin
 writeln('lol');
end;

begin
 Thread.Create(false);
end.
Непашет...
Затем ради интереса проделываю аналогичное с использованием формы:
Код:
unit Unit1;

interface

uses Forms, StdCtrls, Classes, Controls;

type
 TForm1 = class(TForm)
  Label1: TLabel;
  procedure FormCreate(Sender: TObject);
 end;

 Thread = class(TThread)
  procedure Execute; override;
 end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Thread.Execute;
begin
 Form1.Label1.Caption:='lol';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Thread.Create(false);
end;

end.
Фсе гламурно пашет...

В чем грабли?
 
Ответить с цитированием

  #2  
Старый 19.10.2006, 19:48
qPhoenix
Banned
Регистрация: 15.12.2005
Сообщений: 95
Провел на форуме:
1509352

Репутация: 132
Отправить сообщение для qPhoenix с помощью ICQ
По умолчанию

Не катит...
 
Ответить с цитированием

  #3  
Старый 19.10.2006, 19:57
qPhoenix
Banned
Регистрация: 15.12.2005
Сообщений: 95
Провел на форуме:
1509352

Репутация: 132
Отправить сообщение для qPhoenix с помощью ICQ
По умолчанию

Аналогично...
 
Ответить с цитированием

  #4  
Старый 19.10.2006, 22:05
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

Thread = class(TThread)
procedure Execute; override;
end;

когда создаешь класс, необходимо "создавать" класс... В пример тот же TStrings/TStringList/...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #5  
Старый 25.10.2006, 16:50
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию

DWORD WINAPI threadfunc()
{
printf("lol");
Sleep(1000);
return 0;
}

void main()
{
HANDLE hthread;
hthread = CreateThread(...);

WaitForSingleObject(hthread, INFINITE);
}

можт результата не видишь потому что главный поток соскакивает до того как второй закончит исполнение. для этого WaitFor...
__________________


snow white world wide
 
Ответить с цитированием

  #6  
Старый 27.10.2006, 22:22
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

Ту сноу! вместо слип(1000) тоже можно использовать ВаитФоСинглОбжект с нулевым событием и задержкой на 1000. Это вроде меньше ресурсов жрет.
 
Ответить с цитированием

  #7  
Старый 27.10.2006, 22:30
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

2da_ff эээ какие там еще ресурсы сжираются?
 
Ответить с цитированием

  #8  
Старый 27.10.2006, 22:48
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

да.. WaitSingleObject() следит за всеми трэдами.. и никакой слип не нужен )
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 
Ответить с цитированием

  #9  
Старый 27.10.2006, 22:55
gemaglabin
Banned
Регистрация: 01.08.2006
Сообщений: 725
Провел на форуме:
7681825

Репутация: 4451


По умолчанию

Вот этот код стопроцентно работает

PHP код:
program Project1;

{
$APPTYPE CONSOLE}

uses
  Classes
,StdCtrls;

type
 Thread 
= class(TThread)
  
procedure Executeoverride;
 
end;

procedure Thread.Execute;
begin
 writeln
('lol');
end;

begin
 Thread
.Create(false);
end
Скриншот прилагается - возможно ты не правильно компилируешь,попробуй cntrl+F9 ( компиляция без запуска ) %)

 
Ответить с цитированием

  #10  
Старый 27.10.2006, 23:22
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

2гема нахрена для этого еще класс этот дурацкий использовать? у снега все понятнее, проще и более того правильнее)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая антиотладка на Delphi TaNkist Авторские статьи 13 03.11.2006 17:00
.:Join-им 2 exe-шника ручками (using Delphi):. xShreKx Авторские статьи 6 12.06.2006 16:22
Азы Delphi Morph Авторские статьи 1 13.03.2005 01:22



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ