ich habe ein Programm mit Lazarus 1.2.6 angefangen. Das wurde auch kompiliert und lief auch. Nach einer Pause wollte ich mich nun wieder an dieses Programm setzen. Habe Lazarus dabei auf die aktuelle Version 1.8.0 aktualisiert. Damit bekomme ich Compilerfehler. Habe aber keine Änderungen am Code gemacht. Einfach nur mit der neuen Lazarusversion kompiliert.
Windows 7, 64 bit
Lazarus 1.8.0 (für windows 64 bit)
Ich greife auf das WMI von Windows zu. Es sind OLEVariant etc. im Spiel. Einen Übergabeparamter mußte ich mit nil angeben. Dafür bekomme ich einen Compilerfehler, daß es Lazarus genauer haben mag - nicht Pointer, sondern LongWord.
Code: Alles auswählen
...
var WMIService : OLEVariant;
WbemObjectSet: OLEVariant;
WbemObject : Variant;
oEnum : IEnumVariant;
...
...
WbemObjectSet := WMIService.ExecQuery('SELECT * FROM Msvm_VirtualSystemManagementService', 'WQL', WMI_WbemFlagForwardOnly);
oEnum := IUnknown(WbemObjectSet._NewEnum) as IEnumVariant;
if oEnum.Next(1, WbemObject, nil) = 0 then // <-- hier der Fehler, das nil will er nicht
...
Error: Call by var for arg no. 3 has to match exactly: Got "Pointer" expected "LongWord"
Lösung ist klar


Meine Frage ist nur, was ist das LongWord von nil?
Caste ich direkt mit: LongWord(nil)?
Ist es 0?
Ist es -1?
Oder etwas anderes?
Danke und Grüße,
Tom