|
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, катастрофа.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |