Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Supports verständnis problem
30. Mai 2014, 09:40
Du kannst das auch so schreiben (wird dann evtl. verständlicher)
Delphi-Quellcode:
function TWMPHelper.InitVis(VisGUID: TGuid; PresetIndex: Integer): Bool;
var
ObjInstance : IUnknown;
begin
Result := False;
if CoCreateInstance(VisGUID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,
IUnknown, ObjInstance) = S_OK then
begin
// Versuch auf IWmpEffects zu casten. Bei einem Fehlschlag,
// wird Nil zurück gegeben und die ObjInstance
// unterstützt das Interface IWmpEffects nicht.
if Supports( ObjInstance, IID_IWMPEffects, _IWmpEffects ) then
// Versuch auf IWmpEffects2 zu casten. Bei einem Fehlschlag,
// wird Nil zurück gegeben und die ObjInstance
// unterstützt das Interface IWmpEffects2 nicht.
if Supports( ObjInstance, IID_IWMPEffects2, _IWmpEffects2) then
// wird das Interface IWmpEffects2 unterstützt, brauchen
// wir das Interface IWmpEffects nicht mehr.
_IWmpEffects := nil;
// Erstes Preset setzen. Das muss sein da es ansonsten bei
// einigen Visualisierungen zu einer AccessViolation Exception führt.
SetCurrentPreset(PresetIndex);
Result := True;
end;
end;
oder auch so
Delphi-Quellcode:
function TWMPHelper.InitVis(VisGUID: TGuid; PresetIndex: Integer): Bool;
var
ObjInstance : IUnknown;
begin
Result := False;
if CoCreateInstance(VisGUID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,
IUnknown, ObjInstance) = S_OK then
begin
// Versuch auf IWmpEffects2 zu casten. Bei einem Fehlschlag,
// wird Nil zurück gegeben und die ObjInstance
// unterstützt das Interface IWmpEffects2 nicht.
if Supports( ObjInstance, IID_IWMPEffects2, _IWmpEffects2 ) then
_IWmpEffects = nil
else
// Versuch auf IWmpEffects zu casten. Bei einem Fehlschlag,
// wird Nil zurück gegeben und die ObjInstance
// unterstützt das Interface IWmpEffects nicht.
Supports( ObjInstance, IID_IWMPEffects, _IWmpEffects);
// Erstes Preset setzen. Das muss sein da es ansonsten bei
// einigen Visualisierungen zu einer AccessViolation Exception führt.
SetCurrentPreset(PresetIndex);
Result := True;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo (30. Mai 2014 um 09:46 Uhr)
|
|
Zitat
|