Zitat von
alzaimar:
Delphi ist typensicher, d.h. also, das '0' nicht mit einem Interface kompatibel ist.
Verwende 'nil' oder die Funktion 'Assigned', also:
Delphi-Quellcode:
If IInterface <> nil Then
...
If Assigned (IInterface) Then
...
Und deklariere den Parameter auch als LongInt.
Delphi-Quellcode:
function GetPresetCount(var pnPresetCount: LongInt): HRESULT;
Var
IntVal: LongInt;
begin
If Assigned(IInterface) Then
begin
IntVal := 0;
result := IWmpEffects.GetPresetCount(IntVal);
pnPresetCount := IntVal;
end else
result := -1;
end;
geht leider auch nicht
[Pascal Error] WMPUnit.pas(218): E2008 Incompatible types
Das !
If IInterface <> nil Then
gibt den gleiche Fehler zurück wie vorher
[Pascal Error] WMPUnit.pas(218): E2015 Operator not applicable to this operand type
Auch das bleibt gleich.
[Pascal Error] WMPUnit.pas(221): E2018 Record, object or class type required für den bereich (IntVal);
obwohl als LongInt declariert.
EDIT:
Laut MS;
Zitat:
The GetPresetCount method gets the preset count.
Syntax
HRESULT GetPresetCount(
Long* count
);
Parameters
count
[out] Long value specifying the preset count.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.
Remarks
Called by Windows Media Player to obtain the number of presets contained by the visualization.
Requirements
Version: Windows Media Player version 7.0 or later.
Header: Include effects.h.
gruss Emil