|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Создание нового типа в *_tlb.pas
Здравствуйте.Как создать новый тип ArrayStr = Array of String ,чтобы его можно было потом использовать в COM DLL?
Код:
unit Ip2Com_events_TLB; // ************************************************************************ // // WARNING // ------- // The types declared in this file were generated from data read from a // Type Library. If this type library is explicitly or indirectly (via // another type library referring to this type library) re-imported, or the // 'Refresh' command of the Type Library Editor activated while editing the // Type Library, the contents of this file will be regenerated and all // manual modifications will be lost. // ************************************************************************ // // PASTLWTR : 1.2 // File generated on 06.06.2023 7:27:03 from Type Library described below. // ************************************************************************ // // Type Lib: C:\Program Files (x86)\Borland\Delphi7\IP2COM\Ip2Com_events.tlb (1) // LIBID: {51905539-63CB-439C-BA6D-B5503E313C1F} // LCID: 0 // Helpfile: // HelpString: Ip2Com_events Library // DepndLst: // (1) v2.0 stdole, (C:\Windows\SysWOW64\stdole2.tlb) // ************************************************************************ // {$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. {$WARN SYMBOL_PLATFORM OFF} {$WRITEABLECONST ON} {$VARPROPSETTER ON} interface uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants; // *********************************************************************// // GUIDS declared in the TypeLibrary. Following prefixes are used: // Type Libraries : LIBID_xxxx // CoClasses : CLASS_xxxx // DISPInterfaces : DIID_xxxx // Non-DISP interfaces: IID_xxxx // *********************************************************************// const // TypeLibrary Major and minor versions Ip2Com_eventsMajorVersion = 1; Ip2Com_eventsMinorVersion = 0; LIBID_Ip2Com_events: TGUID = '{51905539-63CB-439C-BA6D-B5503E313C1F}'; IID_IIp2Com: TGUID = '{3AF54457-3687-4C2F-8ACD-D31B0ACAAE77}'; CLASS_Ip2Com: TGUID = '{C2D06CF9-F5DF-4FF1-B32A-955FB4108CBF}'; // *********************************************************************// // Declaration of Enumerations defined in Type Library // *********************************************************************// // Constants for enum Version type Version = TOleEnum; const Major = $00000001; Minor = $00000001; type // *********************************************************************// // Forward declaration of types defined in TypeLibrary // *********************************************************************// IIp2Com = interface; IIp2ComDisp = dispinterface; // *********************************************************************// // Declaration of CoClasses defined in Type Library // (NOTE: Here we map each CoClass to its Default Interface) // *********************************************************************// Ip2Com = IIp2Com; // *********************************************************************// // Declaration of structures, unions and aliases. // *********************************************************************// PWordBool1 = ^WordBool; {*} PWideString1 = ^WideString; {*} POleVariant1 = ^OleVariant; {*} RecordArray = packed record end; UnionArray = record end; // *********************************************************************// // Interface: IIp2Com // Flags: (6464) Dual OleAutomation Replaceable Dispatchable // GUID: {3AF54457-3687-4C2F-8ACD-D31B0ACAAE77} // *********************************************************************// IIp2Com = interface(IDispatch) Вставляю в код,но после сохранение этот тип удаляется. |
#2
|
|||
|
|||
Редактировать самому *_TLB.pas наверно не стоит.
Там в первом блоке комментариев написано почти на русском "the contents of this file will be regenerated and all manual modifications will be lost" Этот файл все таки обертка к Ip2Com_events Library и добавлять в pas файл что-то свое - стоит 100 раз подумать. Попробуй как то по другому. |
Этот пользователь сказал Спасибо rand за это полезное сообщение: | ||
infopol (06.06.2023)
|
#3
|
|||
|
|||
Значит буду думать
Хотел создать функцию которая принимает и возвращает ArrayString
|
#4
|
|||
|
|||
Ну, для начала - String не COM safe тип.
Во вторых, как тебе уже сказали, просто добавить свою функцию в существующую библиотеку нельзя. Ведь _TLB это всего лишь описание интерфейса существующего COM-объекта. Т.е. добавление этой функции в _TLB не добавит эту функцию в сам объект и, как следствие, она будет удалена при следующем реимпорте библиотеки. Что можно сделать - создать свой модуль (обычный), в котором реализовать соотв. функцию, а она уже внутри будет вызывать соотв. COM объект. В принципе, если этот фнукционал нужен в нескольких проектых и очень хочется "закрыть" его, то можно создать свой COM-объект, в нем реализовать соотв. интерфейс и имлементацию и уже внутри имлементации вызывать существующий COM-объект. Т.е. получается как бы еще один слой обертки. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
infopol (07.06.2023)
|
#5
|
|||
|
|||
Сделал так
Код:
function F_MyFunction(const aFile: WideString;var res:Array of string ): WordBool; safecall; uses ComServ; function TIP2COM.F_MyFunction(const aFile: WideString;var res:Array of string ): WordBool; safecall; begin result:=False; end; Последний раз редактировалось infopol, 07.06.2023 в 07:04. |