![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.Как создать новый тип 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. |