'Declare an OleVariant and IEnumVariant in Inno Setup

I have a function for getting BIOS serial numbers in the code section that works in Delphi but it doesn't recognize the variable declarations. How do I get around this.

var
  FSWbemLocator : OleVariant;
  FWMIService   : OleVariant;  

function GetWMIstring(const WMIClass, WMIProperty:string): string;
var
  FWbemObjectSet: OleVariant;
  FWbemObject   : OleVariant;
  oEnum         : lEnumVariant;
  iValue        : LongWord;
begin;
  Result:='';
  FWbemObjectSet:= FWMIService.ExecQuery(Format('Select %s from %s',[WMIProperty, WMIClass]),'WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  if oEnum.Next(1, FWbemObject, iValue) = 0 then
    if not VarIsNull(FWbemObject.Properties_.Item(WMIProperty).Value) then
      Result:=FWbemObject.Properties_.Item(WMIProperty).Value;

  FWbemObject:=Unassigned;
end;


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source