![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь в переводе с СИ на Delphi
voron70@yandex.ru © (2006-02-01 17:47:00)Есть исходник драйвера написанный на си.
В нем есть переменная типа Handle - это класс в си CHandle, Вопрос какого типа должна быть эта переменная в Дельфи т.к. Handle дельфи не знает а Hwnd не подходит.
Пример из кода:
TDriver.h
***************************
обьявление класса........
private:
HANDLE driverHandle; // driver handle - та самая переменная
TDriver.cpp
***************************
//Destructor. Libera recursos.
TDriver::~TDriver(void)
{
if(driverHandle != NULL)
{
CloseHandle(driverHandle);
driverHandle = NULL;
}
UnloadDriver();
}
Kolan (2006-02-02 15:25:00) [1]Desdechado © (02.02.06 11:00) [6]
Да забыл...
Игорь Шевченко (2006-02-02 15:21:00) [2]
> Я так понимаю malloc это аналог Setlength вот только как
> его использовать?
malloc это аналог GetMem
voron70 (2006-02-02 15:20:00) [3]Еще вопрос как переписать на паскаль эту строчку
C++
dirBuffer = (LPTSTR) malloc (len);
если
C++
LPTSTR dirBuffer;
DWORD len = (DWORD)(strlen(name) + strlen(path) + 1);
Delphi
var
dirBuffer : LPTSTR;
len : DWORD;
begin
len := DWORD(strlen(name) + strlen(path) + 1);
.....
Я так понимаю malloc это аналог Setlength вот только как его использовать?
voron70 (2006-02-02 14:08:00) [4]Спасибо за обьяснения. С СИ я знаком просто не очень знаю WinAPI.
Desdechado (2006-02-02 11:00:00) [5]тогда уж
TDriver::~TDriver(void) => destructor TDriver.Destroy();
Kolan (2006-02-01 22:27:00) [6]
TDiriver.Destroy;
begin
if driverHandle <> INVALID_HANDLE_VALUE then
begin
CloseHandle(driverHandle);
driverHandle := INVALID_HANDLE_VALUE;
end;
UnloadDriver;
end;
Забыл...
Kolan (2006-02-01 22:26:00) [7]
TDriver::~TDriver(void)
{
if(driverHandle != NULL)
{
CloseHandle(driverHandle);
driverHandle = NULL;
}
UnloadDriver();
}
Как-то так? Я вообще не спец в C :)
driverHandle THandle;
TDiriver.Destroy;
begin
if driverHandle <> INVALID_HANDLE_VALUE then
begin
CloseHandle(driverHandle);
driverHandle := INVALID_HANDLE_VALUE;
end;
end;
Desdechado (2006-02-01 19:12:00) [8]сорри, вот это
> переменная типа Handle - это класс в си CHandle,
запутало
подумалось, что handle - это название переменной
Игорь Шевченко (2006-02-01 18:07:00) [9]
> возможно, это эквивалент THandle
Прямой эквивалент
Desdechado (2006-02-01 18:03:00) [10]> переменная типа Handle - это класс в си CHandle,
как-то не стыкуется с
> HANDLE driverHandle;
в Си сначала пишется тип, потом имя переменной
так вот этотип называется HANDLE, найди его описание в справке или заголовочных файлах
возможно, это эквивалент THandle