Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Нужна помощь в переводе с СИ на Delphi   Найти похожие ветки 

 
voron70@yandex.ru   (2006-02-01 17:47) [0]

Есть исходник драйвера написанный на си.
В нем есть переменная типа 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();
}


 
Desdechado ©   (2006-02-01 18:03) [1]

> переменная типа Handle - это класс в си CHandle,
как-то не стыкуется с
> HANDLE driverHandle;

в Си сначала пишется тип, потом имя переменной
так вот этотип называется HANDLE, найди его описание в справке или заголовочных файлах
возможно, это эквивалент THandle


 
Игорь Шевченко ©   (2006-02-01 18:07) [2]


> возможно, это эквивалент THandle


Прямой эквивалент


 
Desdechado ©   (2006-02-01 19:12) [3]

сорри, вот это
> переменная типа Handle - это класс в си CHandle,
запутало
подумалось, что handle - это название переменной


 
Kolan ©   (2006-02-01 22:26) [4]

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;  


 
Kolan ©   (2006-02-01 22:27) [5]

TDiriver.Destroy;
begin
if driverHandle <> INVALID_HANDLE_VALUE then
begin
  CloseHandle(driverHandle);
  driverHandle := INVALID_HANDLE_VALUE;
end;
UnloadDriver;
end;  


Забыл...


 
Desdechado ©   (2006-02-02 11:00) [6]

тогда уж
TDriver::~TDriver(void) => destructor TDriver.Destroy();


 
voron70   (2006-02-02 14:08) [7]

Спасибо за обьяснения. С СИ я знаком просто не очень знаю WinAPI.


 
voron70   (2006-02-02 15:20) [8]

Еще вопрос как переписать на паскаль эту строчку
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 вот только как его использовать?


 
Игорь Шевченко ©   (2006-02-02 15:21) [9]


> Я так понимаю malloc это аналог Setlength вот только как
> его использовать?


malloc это аналог GetMem


 
Kolan ©   (2006-02-02 15:25) [10]

Desdechado ©   (02.02.06 11:00) [6]
Да забыл...



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

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
2-1140080370
DrNemo
2006-02-16 11:59
2006.03.05
Закачка файла с интернета на ар1


15-1139654316
s65
2006-02-11 13:38
2006.03.05
тест мини оперы


1-1139000855
JIurasdfsdf
2006-02-04 00:07
2006.03.05
Перетащить черную линию на форме?


2-1139976703
Триггер
2006-02-15 07:11
2006.03.05
Вопрос по SQL


2-1140286213
Дубинка
2006-02-18 21:10
2006.03.05
Подключение по локальной сети