|   |   | 
| 
 | dll на delphi | ☑ | ||
|---|---|---|---|---|
| 0
    
        john_ddd 28.06.12✎ 17:11 | 
        написал простенькую dll на делфи. Зарегистрировал в regsvr32.exe
  написало ок. Пытаюсь создать ком объект в 1с 8 Хеллоу = Новый ComОбъект("aaa.GetSimpleText"); aaa - это имя длл и имя library GetSimpleText - функция пишет Недопустимая строка с указанием класса | |||
| 1
    
        john_ddd 28.06.12✎ 17:14 | 
        ап     | |||
| 2
    
        john_ddd 28.06.12✎ 17:18 | 
        а если так задам вопрос.
  при создании ком обекта Новый ComОбъект("aaa.GetSimpleText"); что в кавычка должно указываться? (имя длл и имя library) | |||
| 3
    
        john_ddd 28.06.12✎ 17:19 | 
        а может моя простенькая длл вобще не ком?     | |||
| 4
    
        Serginio1 28.06.12✎ 17:20 | ||||
| 5
    
        romix 28.06.12✎ 17:21 | 
        Образчики внешних компонент зацените у меня в карточке.     | |||
| 6
    
        sergeante 28.06.12✎ 17:21 | 
        Это не КОМ это компонента. ЗагрузитьВнешнююКомпоненту("имя.длл")     | |||
| 7
    
        Serginio1 28.06.12✎ 17:22 | 
        Обычно первым иден название библиотеки затем название кокласса     | |||
| 8
    
        H A D G E H O G s 28.06.12✎ 17:35 | 
        (0) Найди ее regedit-ом в реестре по имени файла dll и не сношай мозг.     | |||
| 9
    
        H A D G E H O G s 28.06.12✎ 17:35 | 
        (5) У тебя там кстати эпик фейл есть.     | |||
| 10
    
        H A D G E H O G s 28.06.12✎ 17:40 | 
        В юните AddInObj
  в процедуре CallAsFunc после строки: pvarRetValue:=vk_object.g_Value; надо добавить: vk_object.g_Value:=Unassigned; Иначе Адъ и Израиль, если будешь в компоненте создавать и возвращать объекты 1С-а. | |||
| 11
    
        john_ddd 28.06.12✎ 17:46 | 
        (10) вот длл-ка...чего не хватает?
  library aaa; uses Windows, SysUtils, Classes; function DllRegisterServer: HResult; stdcall; begin Result := ERROR_SUCCESS; end; function DllUnregisterServer: HResult; stdcall; begin Result := ERROR_SUCCESS; end; function DllInstall( bInstall : BOOL; pszCmdLine : LPCWSTR ): HResult; stdcall; begin Result := ERROR_SUCCESS; end; {Определяем функцию как stdcall} function GetSimpleText(LangRus: Boolean): PChar; stdcall; begin {В зависимости от LangRus возвращаем русскую (True) либо английскую (False) фразу} if LangRus then Result := PChar('Здравствуй, мир!') else Result := PChar('Hello, world!'); end; {Директива exports указывает, какие функции будут экспортированы этой DLL} exports GetSimpleText, DllRegisterServer, DllUnregisterServer, DllInstall; begin end. | |||
| 12
    
        H A D G E H O G s 28.06.12✎ 17:52 | ||||
| 13
    
        H A D G E H O G s 28.06.12✎ 17:54 | 
        Это там все страшно, но тебе, мой юнный неофит, достаточно нажать
  View->Type Library и все встанет на свои места. | |||
| 14
    
        john_ddd 28.06.12✎ 17:58 | 
        (13)понятно...а почему в моем примере Type Library недоступен для нажатия?     | |||
| 15
    
        H A D G E H O G s 28.06.12✎ 18:00 | 
        (14) Потому что у тебя не создана библиотека типов, искренне ваш, К.О.     | |||
| 16
    
        john_ddd 28.06.12✎ 18:01 | 
        (15)спасибо...понятно стало куда копать     | |||
| 17
    
        H A D G E H O G s 28.06.12✎ 18:01 | 
        Закрываем все проекты, нажимаем New->Other, ActiveX, выбираем ActiveX library     | |||
| 18
    
        H A D G E H O G s 28.06.12✎ 18:02 | 
        Задаем рассово верный Name     | |||
| 19
    
        H A D G E H O G s 28.06.12✎ 18:07 | 
        Нажимаем New->Other, ActiveX, выбираем Automation object, задаем рассово верное имя класса, ок.
  Сейвим проект (dpr который) по имени типа, юнит например как main, открываем интерфейс, (красный чупа-чупс такой), и в нем добавляем метод (зелененький такой), в параметрах метода прописываем параметры, и один возвращаемый параметр (returt type не трогаем, он всегда, по правилам OLE должон HRESULT возвращать, Delphi коварна) | |||
| 20
    
        H A D G E H O G s 28.06.12✎ 18:07 | 
        Черт побери, уже 18-10, катастрофа.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |