Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Parametertypen ermitteln (COM Libraries) (https://www.delphipraxis.net/6366-parametertypen-ermitteln-com-libraries.html)

sakura 8. Jul 2003 13:01


Parametertypen ermitteln (COM Libraries)
 
Hi,

ich habe ein Programm, welche anhand des ITypeInfo Interfaces die "Member" einer COM-Bibliothek ermittelt. Wenn ich jetzt auf die Ebene der Funktionen und Eigenschaften komme, möchte ich die Typen (und Standardwerte) der Parameter ermitteln. Wo muss ich ansetzen?

Delphi-Quellcode:
// TypeInfo ist vom Typ ITypeInfo (unit ActiveX)
// TypeAttr ist vom Typ PTypeAttr
// beide sind korrekt initialisiert
var
  FuncIndex: Integer;
  FuncDesc: PFuncDesc;
  ParamIndex: Integer;
  Names: PBStrList;
  cNames: Integer;
....
    for FuncIndex := 0 to TypeAttr.cFuncs - 1 do begin
      TypeInfo.GetFuncDesc(FuncIndex, FuncDesc);
      try
        TypeInfo.GetDocumentation(FuncDesc.memid, @AName,
          @ADocString, @AHelpContext, nil);
        // Rückgabetyp der Funktion
        VarTypeAsText(FuncDesc.elemdescFunc.tdesc.vt);
        if FuncDesc.cParams > 0 then begin
          TypeInfo.GetNames(FuncDesc.memid, Names, sizeof(TBStrList),
            cNames);
          for ParamIndex := 1 to FuncDesc.cParams do
          begin
            // Name der Funktion
            Names[ParamIndex]
//****************************************************************
// WIE BEKOMME ICH DEN TYP DES PARAMETERS UND SEINEN STANDARDWERT?
//****************************************************************
          end;
        end;
      finally
        TypeInfo.ReleaseFuncDesc(FuncDesc);
      end;
    end;
...:cat:...

jbg 8. Jul 2003 15:06

Re: Parametertypen ermitteln (COM Libraries)
 
Delphi-Quellcode:
ParamType := FuncDesc.lprgelemdescParam^[ParameterIndex].tdesc.vt

sakura 8. Jul 2003 15:20

Re: Parametertypen ermitteln (COM Libraries)
 
:wall:

Danke!!!
...:cat:...

sakura 8. Jul 2003 15:24

Re: Parametertypen ermitteln (COM Libraries)
 
@jbg: Man mag es kaum glauben, aber die sind, im Unterschied zu den Namen, nullbasiert :twisted:
Code:
ParamType := FuncDesc.lprgelemdescParam^[ParameterIndex[b][color=#ff0019]-1[/color][/b]].tdesc.vt
...:cat:...

jbg 8. Jul 2003 16:36

Re: Parametertypen ermitteln (COM Libraries)
 
Zitat:

Zitat von sakura
im Unterschied zu den Namen, nullbasiert

Bist du dir da sicher, das die Namen nicht nullbasiert sind? Was steht denn dann bei Names[0] ?

sakura 8. Jul 2003 22:36

Re: Parametertypen ermitteln (COM Libraries)
 
Zitat:

Zitat von jbg
Bist du dir da sicher, das die Namen nicht nullbasiert sind? Was steht denn dann bei Names[0] ?

Ja, ich bin mir sicher. In Names[0] steht noch einmal der Name der Eigenschaft/Methode. Stellt sich nur die Frage, warum an FuncDesc.lprgelemdescParam^[0] nicht auch noch einmal deren Rückgabewert steht. MS :!: :evil:

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz