gpt4 book ai didi

delphi - 变量/过程错误

转载 作者:行者123 更新时间:2023-12-02 08:23:32 24 4
gpt4 key购买 nike

procedure  GetWin32_DiskDriveInfo;
const
WbemUser ='';
WbemPassword ='';
WbemComputer ='localhost';
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet: OLEVariant;
FWbemObject : Variant;
oEnum : IEnumvariant;
sValue : string;
begin
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive','WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
while oEnum.Next(1, FWbemObject, nil) = 0 do

所以我遇到了 [dcc32 Error] Project2.dpr(29): E2033 Types ofactual and Formal varParameters must be equal 。我将它放在上面显示的代码的最后一行(我想它与 FWbemObject 有关)变量 。请注意,我使用 Delphi 10 Seattle 。

最佳答案

您使用的代码如果用于 FPC,在 Delphi 下您需要进行一些更改。

这是 IEnumVARIANT.Next 函数的定义方式

function Next(celt: LongWord; var rgvar : OleVariant; out pceltFetched: LongWord): HResult; stdcall;

因此,您需要将 FWbemObject 的类型更改为 OleVariant,并为 pceltFetched 参数添加另一个变量。

像这样

  FWbemObject   : OLEVariant;
pceltFetched : LongWord;
begin
...
...
while oEnum.Next(1, FWbemObject, pceltFetched) = 0 do
...
...

end;

此外,如果您想从控制台应用程序使用此代码,请记住调用 CoInitialize 方法。

关于delphi - 变量/过程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com