Ver Mensaje Individual
  #6  
Antiguo 16-09-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo que te comentaba es que en estas líneas:

Código Delphi [-]
          if aParamDataTypeArray[i] = wbemCimtypeObject then
            olePropValue := null
          else
            olePropValue := aParamValueArray[i];

          objWMIProperty.Set_Value(olePropValue);


que es donde asignas el valor al parámetro de entrada, utilices el código que te puse anteriormente.

En las propiedades de tipos básicos se pasa el valor. Tenemos un array of variant, y pasamos un elemento de ese array (aParamValueArray[i]).
Ese valor lo almacenamos en olePropValue, que es del tipo OleVariant. Al final ese valor será un string, un integer,...

En el caso de los parámetros de tipo array, empiezas con un array de variants (en lugar de un tipo simple) y lo tienes que acabar pasando como un OleVariant. En ese punto entra el procedimiento (o trozo de código) que te puse más arriba. Con eso pasas un array de valores a un OleVariant. con eso ya lo tienes (creo).

Código Delphi [-]
...
var
  ArrayStrings: array Of string;
  paramArr:OleVariant;
  i:integer;
begin
  ...
  paramArr := VarArrayCreate([0, High(ArrayStrings)], varVariant);
  for i := Low(ArrayStrings) to High(ArrayStrings) do
     paramArr[i] := ArrayStrings[i];
   ...
    ...
Es algo que estoy implementando también en GLibWMI.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita