Вверх ↑
Этот топик читают: Гость
Ответов: 22
Рейтинг: 0
#1: 2025-04-04 13:29:20 ЛС | профиль | цитата
Помогите откорректировать код, при компиляции пишет ошибку

C:\HiAsm_FPC3\Elements\delphi\code\hiInlineCode_62F4710.pas(5) Fatal: File not found: 'ComObj.dcu'
Сборка завершена.

Код должен получить GUID домена.


Add(Button,12876818,161,91)
{
Left=25
Top=10
Width=70
Font=[Arial,8,0,0,1]
Caption="Get"
link(onClick,13337471:doGetDomainGUID,[])
}
Add(Message,10432549,266,91)
{
}
Add(InlineCode,13337471,217,91)
{
WorkPoints=#15:doGetDomainGUID|
EventPoints=#12:onDomainGUID|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|59:uses kol, Share, Debug, ActiveX, ComObj, SysUtils, Windows;|0:|4:type|29: THiAsmClass = class(TDebug)|9: private|8: public|28: onDomainGUID: THI_Event;|58: procedure doGetDomainGUID(var dt: TData; index: word);|6: end;|0:|14:implementation|0:|66:procedure THiAsmClass.doGetDomainGUID(var dt: TData; index: word);|3:var|36: objRootDSE, objDomain: OleVariant;|26:// objDomain: OleVariant;|24: guidBytes: PSafeArray;|19:// pData: Pointer;|18: guidStr: string;|13: i: Integer;|24: formattedGuid: string;|5:begin|20: CoInitialize(nil);|5: try|7: try|48: // Получаем RootDSE для определения домена|54: objRootDSE := CreateOleObject('ADSI.GetObject');|51: objRootDSE.Set_('ADsPath', 'LDAP://RootDSE');|6: |35: // Получаем доменный контекст|53: objDomain := CreateOleObject('ADSI.GetObject');|84: objDomain.Set_('ADsPath', 'LDAP://' + objRootDSE.Get('defaultNamingContext'));|6: |46: // Получаем objectGUID (бинарный массив)|47: guidBytes := objDomain.Get('objectGUID');|6: |45: // Преобразуем бинарный GUID в строку|22: guidStr := '';|27: for i := 0 to 15 do|76: guidStr := guidStr + IntToHex(Byte(PSafeArray(guidBytes).pvData[i]), 2);|8: |45: // Форматируем в стандартный вид GUID|25: formattedGuid := |109: '{' + Copy(guidStr, 7, 2) + Copy(guidStr, 5, 2) + Copy(guidStr, 3, 2) + Copy(guidStr, 1, 2) + '-' +|60: Copy(guidStr, 11, 2) + Copy(guidStr, 9, 2) + '-' +|61: Copy(guidStr, 15, 2) + Copy(guidStr, 13, 2) + '-' +|38: Copy(guidStr, 17, 4) + '-' +|38: Copy(guidStr, 21, 12) + '}';|8: |49: _hi_OnEvent(onDomainGUID, formattedGuid);|10: except|24: on E: Exception do|57: _hi_OnEvent(onDomainGUID, 'Error: ' + E.Message);|8: end;|9: finally|19: CoUninitialize;|6: end;|4:end;|0:|4:end.|
link(onDomainGUID,10432549:doMessage,[])
}

карма: 0

0
Ответов: 4658
Рейтинг: 760
#2: 2025-04-05 16:05:25 ЛС | профиль | цитата
Модули ActiveX и ComObj не входят в состав текущих компиляторов HiAsm.
Вместо них используются ActiveKOL, KOLComObj.
Как применять - нужно смотреть компоненты, их использующие, и делать по аналогии.
Модуля SysUtils тоже нет.
карма: 26

0
2
Сообщение
...
Прикрепленные файлы
(файлы не залиты)