![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передать THandle как Cardinal [D5, 2000]
Призрак © (2006-06-14 08:45:00)Надо в поток (сделанный через CreateThread) в качестве параметра передать THandle, а компилер говорит - Cardinal ему подавай :( как ему угодить?
Сергей М. (2006-06-14 09:06:00) [1]
> к Рихтеру она видимо отношения не имеет
Конечно не имеет)... Как и Рихтер к Делфи)
Сергей М. (2006-06-14 09:05:00) [2]А где ты вообще увидел Cardinal в декларации этой ф-ции ?
function CreateThread(lpThreadAttributes: Pointer;
dwStackSize: DWORD; lpStartAddress: TFNThreadStartRoutine;
lpParameter: Pointer; dwCreationFlags: DWORD; var lpThreadId: DWORD): THandle; stdcall;
Кпак видишь, тип параметра Pointer, а не Cardinal ..
> некоторые умники при мне использовали CreateThread и метали
> понты
В принципе нет ничего катастрофического в использовании именно CreateThread. Но в этом случае придется принимать самостоятельные меры по обеспечению безопасного использования менеджера памяти в мультипоточной среде исполнения, а также самому организовывать верхнеуровневую обработку потенциальных исключений.
Призрак (2006-06-14 09:04:00) [3]блин... дошло.
Incompatible types: Cardinal and Pointer
Я думал, он имеет в виду что хочет Cardinal, а я ему даю Pointer... оказалось наоборот - он в качестве параметра хочет Pointer, а THandle - это Cardinal :))) Написал Pointer (Myhandle) - заработало. :)
и оффтоп - а посмотрел на BeginThread, понял что к Рихтеру она видимо отношения не имеет, но всё равно лучше использовать её. Спасибо...
Призрак (2006-06-14 08:55:00) [4]
> Cardinal(MyHandle)
Написал. То же самое говорит! Как будто там просто MyHandle написано... :(((
> По ряду важных причин вместо CreateThread настоятельно рекомендуется
> использовать BeginThread.
Спасибо... я как раз обратил внимание на жто место в Рихтере и задумался, как эта функция называется в делфи :) просто некоторые умники при мне использовали CreateThread и метали понты, и я подумал что наверное нет никакой функции...
Сергей М. (2006-06-14 08:49:00) [5]
> как ему угодить?
Cardinal(MyHandle)
> сделанный через CreateThread
По ряду важных причин вместо CreateThread настоятельно рекомендуется использовать BeginThread.