Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];

Вниз

CreateThread   Найти похожие ветки 

 
rimd   (2004-01-05 14:37) [0]

что я не правильно пишу?
var
HThread:THandle;
idThread:DWORD;

HThread:=CreateThread(nil,0,@ThreadFNC,nil,0,idThread);


 
Mystic   (2004-01-05 14:41) [1]

1) Вместо CreateThread надо использовать BeginThread
2) Приведи объявление ThreadFNK


 
Rimd   (2004-01-05 14:41) [2]

функция выглядет так function ThreadFNC:boolean;


 
panov   (2004-01-05 14:42) [3]

>Rimd © (05.01.04 14:41) [2]

function ThreadFNC:boolean; stdcall;


 
Rimd   (2004-01-05 14:43) [4]

какая разница? компилятор говорит что я козел и делаю все неправильно!


 
Mystic   (2004-01-05 14:44) [5]

function ThreadFNC(Arg: Pointer): Integer; stdcall;


 
YuRock   (2004-01-05 14:46) [6]

Попробуй:

HThread:=CreateThread(nil,0,@ThreadFNC, Pointer(1),0,idThread);


 
default   (2004-01-05 14:48) [7]

"какая разница? компилятор говорит что я козел и делаю все неправильно!"
орех!!!!!


 
rimd   (2004-01-05 14:48) [8]

HThread:=CreateThread(nil,0,@ThreadFNC,<сюда ставит курсор и говорит variable required>nil,0,idThread);


 
Mystic   (2004-01-05 14:51) [9]

function ThreadFNC(Arg: Pointer): Integer; stdcall;
begin
Result := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
idThread:DWORD;
begin
BeginThread(nil,0,@ThreadFNC,nil,0,idThread);
end;


Use this routine or a TThread object to spawn separate threads of execution instead of calling the CreateThread Win32API directly. BeginThread encapsulates the Win32 CreateThread API call, but unlike CreateThread, it sets the global IsMultiThread variable, thereby making the heap thread-safe.


 
YuRock   (2004-01-05 14:53) [10]

Что говорит компилятор? Если то, что я думаю, попробуй

HThread:=CreateThread(nil,0,@ThreadFNC, Pointer(1),0,@idThread);


 
YuRock   (2004-01-05 14:55) [11]

> YuRock © (05.01.04 14:53) [10]

Извиняюсь, я не правильно думал. Так что говорит компилятор?


 
Mystic   (2004-01-05 14:59) [12]

function ThreadFNC(Arg: Pointer): Integer;
begin
Result := 0;
MessageBox(0, "test", "test", MB_OK);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
idThread: DWORD;
hThread: THandle;
begin
hThread := BeginThread(nil, 0, @ThreadFNC, nil, 0, idThread);
WaitForSingleObject(hThread, INFINITE);
end;


Там выше у меня ошибка --- при использовании BeginThread, stdcall указывать не надо.


 
Rimd   (2004-01-05 14:59) [13]

variable required


 
YuRock   (2004-01-05 15:05) [14]

Тогда напиши:

HThread := Windows.CreateThread(nil,0,@ThreadFNC, Pointer(1),0,idThread);


 
Игорь Шевченко   (2004-01-05 15:20) [15]

А голова зачем нужна ? Чтобы знать, на каком форуме вопрос задать ?

---
LMD


 
sheriff   (2004-01-06 08:06) [16]

переменные
idThread: DWORD;
hThread: THandle;
должны быть объявлены глобально.


 
ak   (2004-01-06 10:48) [17]

function ThreadFNC: Boolean;
begin
Result := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
HThread: THandle;
idThread: DWORD;
begin
HThread := CreateThread(nil, 0, @ThreadFNC, nil, 0, idThread);
end;

ничего не говорит
компилится
может это я что-то не правильно делаю?


 
panov   (2004-01-06 12:02) [18]

Для создания потока выполняем следующее:

1. Определяем функцию потока.

Например:

function ThreadFunc(s: ShortString):DWORD;stdcall;
begin
MessageBox(0,@s[1],"Это тест",MB_OK);
Result := 1;
end;


2. Определяем переменную для дескриптора потока в пределах нужной нам видимости, например, глобально:

var
H: THandle;


3. Вызываем функцию CreateThread для создания потока.

var
ThreadId: Cardinal;
s: ShortString;
MyExitCode: DWORD;
begin
s := "Test";
H := CreateThread(nil,0,@ThreadFunc,@s,0,ThreadId);
WaitForSingleObject(H,1000);

if GetExitCodeThread(H,MyExitCode) then
begin
if MyExitCode = STILL_ACTIVE
then ShowMessage("Thread is active")
else ShowMessage("Exit Code="+IntToStr(MyExitCode));
end
else ShowMessage("Error");
CloseHandle(H); Не забываем освободить дескриптор!




Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.013 c
1-43575
Eagle-XK
2004-02-27 15:24
2004.03.14
Непонятка м ListView ом


7-43908
_shark_
2003-12-23 12:14
2004.03.14
Как сделать так чтобы программа запускалась под всеми учетными


1-43578
Ш-К
2004-02-27 15:20
2004.03.14
Как из события передать указатель на объект в мой обработчик?


1-43610
Sirruf
2004-03-02 17:19
2004.03.14
Компонент TDBGridEh, черт бы его побрал !!!


6-43717
|e0|0uP
2004-01-07 19:06
2004.03.14
ClientSocket.Socket.SendTex( );





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский