Mega Code Archive

 
Categories / Delphi / OOP
 

GetDocumentation for Type Library

Title: GetDocumentation for Type Library Question: Recently I developed Automation Server for reports in Word and was surprised with failure trying to get Help String for TypeLibrary Answer: Recently I developed Automation Server for reports in Word and was surprised with failure trying to get Help String for TypeLibrary by following code Var k, InfoCount : Integer; TypeLib : ITypeLib; TypeLibGUID : TGUID; ErrorStr: String; HRes : HResult; pbstrDocString, pbstrName : WideString; begin Memo1.Lines.Clear; // InputGUIDString is given input string value TypeLibGUID := StringToGUID(InputGUIDString); // loads Type Library from registry HRes := LoadRegTypeLib(TypeLibGUID, 1, 0, 0, TypeLib); if Failed(HRes) then Exit; // believing in mind, that so it is in practice! InfoCount := TypeLib.GetTypeInfoCount; for k:=0 to kInfoCount-1 do begin HRes := TypeLib.GetDocumentation(k, @pbstrName, @pbstrDocString, nil, nil); if Failed(HRes) then Continue; Memo1.Lines.Add(pbstrName + ': ' + pbstrDocString); end; Here was no errors! But the thing is that help string for Type Library resides beyond the range [0..kInfoCount-1] so TypeLib.GetTypeInfoCount reports about ITypeInfo count, excluding ITypeInfo for himself. Did you know about it? To get Help String for self Type Library one must implement TypeLib.GetDocumentation(-1, @pbstrName, @pbstrDocString, nil, nil); Isn't it unexpectedly for Delphi programmers? I didn't found anything about it in Delphi help!