Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

вопрос про работу с разными Interface ами   Найти похожие ветки 

 
XobBIT   (2003-05-21 16:52) [0]

Есть ли возможность в run-time получить список всех свойств из определенного интерфейса


 
Romkin   (2003-05-21 17:11) [1]

Если это потомок IDispatch - можно, всегда. Есть type library


 
XobBIT   (2003-05-21 17:19) [2]

Да потомок IDispatch, но если можно код программы...


 
Набережных С.   (2003-05-21 20:03) [3]

IDispatch здесь вообще-то не при чем. Загружаешь библиотеку типов, в которой описан интерфейс (если она есть), а потом ItypeLib.GetTypeInfo, ITypeInfo.GetTypeAttr и GetDocunentation


 
XobBIT   (2003-05-22 10:55) [4]

Вообще интерфейсы уже описаны в модуле, но их много и для кажного отдельго делать процедуру не хочется...


 
XobBIT   (2003-05-23 18:39) [5]

Вообще вопрос ITypeInfo, в каком юните находится, и где иожно найти фак по нему...


 
Набережных С.   (2003-05-23 19:43) [6]

uses ...ActiveX...
procedure TForm1.Button1Click(Sender: TObject);
var
Lib: ITypeLib;
Info: ITypeInfo;
n, k: integer;
pAttr: PTypeAttr;
pDesc: PFuncDesc;
s: WideString;
begin
if OpenDialog1.Execute then
begin
s:=OpenDialog1.FileName;
OleCheck(LoadTypeLib(PWideChar(s), Lib));
try
for n:=0 to Pred(Lib.GetTypeInfoCount) do
begin
OleCheck(Lib.GetTypeInfo(n, Info));
OleCheck(Info.GetTypeAttr(pAttr));
try
if
(pAttr.typekind = TKIND_INTERFACE) or
(pAttr.typekind = TKIND_DISPATCH)
then
begin
Info.GetDocumentation(-1, @s, nil, nil, nil);
Memo1.Lines.Add(s);
for k:=0 to Pred(pAttr.cFuncs) do
begin
OleCheck(Info.GetFuncDesc(k, pDesc));
try
Info.GetDocumentation(pDesc.memid, @s, nil, nil, nil);
Memo1.Lines.Add(#9 + s);
finally
Info.ReleaseFuncDesc(pDesc);
end;
end;
end;
finally
Info.ReleaseTypeAttr(pAttr);
end;
end;
finally
Lib:=nil;
end;
end;
end;
Тока если есть ошибки - чур, я не виноват. Сам проверяй.


 
XobBIT   (2003-05-24 00:06) [7]

2 Набережных С.: этот код работает только с *.ocx ?


 
Набережных С.   (2003-05-24 12:13) [8]

Этот код работает с любой библиотекой типов - в tlb, exe, dll, ocx etc.


 
XobBIT   (2003-05-24 12:52) [9]

2 Набережных С.: Код нормальный просто сразу не вьехал ;)

Но есть вопрос: А можно брать не все интерфейсы, а какой-нибудь определенный и как вызвать свойство...

Заранее спасибо


 
Polevi   (2003-05-24 12:54) [10]

GetIdsOfName, Invoke


 
XobBIT   (2003-05-24 13:52) [11]

Я воспользовался ITypeLib.GetTypeInfoOfGuid;

Но появился вопрос, как узнать GUID интерфейса



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-13117
Beregin
2003-05-24 19:23
2003.06.05
TFileStream?


1-13193
qqqqq
2003-05-24 22:11
2003.06.05
Вопрос по строкам.


1-13159
Cherepovets
2003-05-21 20:08
2003.06.05
Label, с регистрами!!!


4-13517
SammIk
2003-04-05 18:13
2003.06.05
Все теже Сообщения


3-13086
I.Ru.Ru
2003-05-19 09:11
2003.06.05
Про DBGrid, Query и временные поля в одном флаконе!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский