Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Supports verständnis problem

  Alt 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)
  Mit Zitat antworten Zitat