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

Вниз

Подкиньте перевод WinNT.h на pascal   Найти похожие ветки 

 
AlexKniga ©   (2003-09-19 12:30) [0]

Подкиньте перевод заголовочного файла WinNT.h на pascal, а то Windows.pas не полон :(


 
MBo ©   (2003-09-19 12:38) [1]

headconv от Bob Swart (drbob42.com)


 
PVOzerski ©   (2003-09-19 12:39) [2]

Посмотри исходники RTL от FreePascal. А лучше - конкретнее: какие функции отсутствуют и тебе нужны?


 
AlexKniga ©   (2003-09-19 13:17) [3]

headconv & исходники RTL от FreePascal посмотрю.

> А лучше - конкретнее: какие функции отсутствуют и тебе нужны?
Константы для пользования GetTokenInformation, AllocateAndInitializeSid и пр.


 
PVOzerski ©   (2003-09-19 13:38) [4]

В оригинале на Си:
typedef enum _TOKEN_INFORMATION_CLASS { // tic

TokenUser = 1,
TokenGroups,
TokenPrivileges,
TokenOwner,
TokenPrimaryGroup,
TokenDefaultDacl,
TokenSource,
TokenType,
TokenImpersonationLevel,
TokenStatistics
} TOKEN_INFORMATION_CLASS;

Во FreePascal переведено как
TOKEN_INFORMATION_CLASS = (TokenUser := 1,TokenGroups,TokenPrivileges,
TokenOwner,TokenPrimaryGroup,TokenDefaultDacl,
TokenSource,TokenType,TokenImpersonationLevel,
TokenStatistics);

т.е. использована конструкция, не поддерживаемая в Delphi. При этом далее после TokenUser фактически прибавляется по единице - совместимо ли это с Си (т.е. не ошибочен ли перевод), я не знаю.
Ясно, что если перевод правилен, то в Delphi эта несовместимость обходится элементарно:

TOKEN_INFORMATION_CLASS = (Token__DUMMY,TokenUser,TokenGroups,TokenPrivileges,
TokenOwner,TokenPrimaryGroup,TokenDefaultDacl,
TokenSource,TokenType,TokenImpersonationLevel,
TokenStatistics);


 
AlexKniga ©   (2003-09-19 14:09) [5]

> При этом далее после TokenUser фактически прибавляется по единице - совместимо ли это с Си (т.е. не ошибочен ли перевод), я не знаю.
По-моему ошибки нет. В паскале всегда, а в си поумолчанию перечисление идет с инкрементом 1.

В TP перечисление начиналось с 1, а в Delphi с 0, так я этих болванов плодил...


 
AlexKniga ©   (2003-09-19 14:16) [6]

Или в TP перечисленный тип был на основе Integer, а в Delphi на основе Cardinal, в общем не важно. Просто тоже были нужны болваны.


 
PVOzerski ©   (2003-09-19 14:47) [7]

А можно вооще не Enum"ом объявлять, а что-нибудь вроде
const
TokenUser = 1;
...
TokenStatistics=...
type
TOKEN_INFORMATION_CLASS=TokenUse..TokenStatistics;


 
Amoeba   (2003-09-19 15:01) [8]

Посмотри ftp://delphi-jedi.org/api/win32api.zip


 
PVOzerski ©   (2003-09-19 15:05) [9]

2Amoeba: Hi!!! :^)
2AlexKniga ©: Там в дистрибутиве FPC еще есть утилитка h2pas - название говорит само за себя.


 
AlexKniga ©   (2003-09-19 15:28) [10]

Я натравил headconv от Bob Swart (drbob42.com) на WinNT.h из VS.NET, так он конвертит уже час. horror!


 
AlexKniga ©   (2003-09-19 16:07) [11]

h2pas winnt.h не берет: не понимает
#define TYPE_ALIGNMENT( t ) \
FIELD_OFFSET( struct { char x; t test; }, test )

#endif

и пр.


 
PVOzerski ©   (2003-09-19 16:49) [12]

Еще утилита есть на http://www.astonshell.com/


 
AlexKniga ©   (2003-09-19 18:22) [13]

2 PVOzerski
Спасибо!

Я остановился на JEDI Windows API Library
отдельная благодарность Amoeba


 
AlexKniga ©   (2003-09-19 18:29) [14]

В Windows.pas из Delphi5 ошибка в декларировании функции
function AllocateAndInitializeSid(const pIdentifierAuthority: TSIDIdentifierAuthority; {надо PSIDIdentifierAuthority}
nSubAuthorityCount: Byte; nSubAuthority0, nSubAuthority1: DWORD;
nSubAuthority2, nSubAuthority3, nSubAuthority4: DWORD;
nSubAuthority5, nSubAuthority6, nSubAuthority7: DWORD;
var pSid: Pointer): BOOL; stdcall;
{$EXTERNALSYM AllocateAndInitializeSid}


В JEDI Windows API Library ошибка исправлена.



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
1-3853
Type
2003-09-19 07:11
2003.10.02
Тип переменной........


1-3842
APTEMKA
2003-09-19 02:21
2003.10.02
Как смениь файл в медиа плеере


1-3851
SiJack
2003-09-19 10:21
2003.10.02
Нормальный Popup в Edit


3-3780
MishaS
2003-09-11 14:36
2003.10.02
Как определитьустановлен ли BDE Administrator


1-3871
Tumcoat
2003-09-18 02:34
2003.10.02
Работа с case