Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь в переводе с СИ на 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо