GetDocumentation for Type Library (Views: 29)
Problem/Question/Abstract: 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! |