Текущий архив: 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.47 MB
Время: 0.01 c