Имя: Пароль:
IT
Админ
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
Примерно вооооот этого:

http://webfile.ru/6018149
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, катастрофа.