Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Procedure Safecall > function?

  Alt 30. Jul 2012, 17:14
Ich möchte eine procedure Safecall überschreiben so das ich das ergebnis zurückgeliefert bekomme.

Delphi-Quellcode:
IWMPEffects2 = interface(IWMPEffects)
  ['{695386EC-AA3C-4618-A5E1-DD9A8B987632}']
....
procedure Destroy; safecall;
...
Das Plugin behandelt es so..
Delphi-Quellcode:
procedure TVisualization.IWMPEffects2_Destroy;
begin
  FhwndParent := 0;
end;
Laut MS..

Zitat:
C++
HRESULT Destroy();
Parameters
This method has no parameters.

Return value
This method returns an HRESULT.

Remarks
This method is used only by windowed visualizations. Windowless visualizations should simply return S_OK.
Daher bin ich was durcheinander da einmal procedure und andererseits laut MS function ?

Wie das Interface casten damit es richtig verarbeitet wird?
Ich würde es ja so schreiben.

Delphi-Quellcode:
function Destroy(): Bool;
begin
  result := false;

  if Assigned(_IWmpEffects2) then
    if _IWmpEffects2.Destroy = S_OK then
      result := true
end;
Nur eine procedure erlaubt ja bekanntlich keinen Result Type.
Zur zeit sieht es so aus..
Delphi-Quellcode:
function DestroyInterface: Bool;
begin
  Result := False;
  // ist ein Visualisierungs-Objekt vorhanden
  if Assigned(BassWMPVis1.WmpVis) then
  begin
    // dann freigeben
    if Assigned(_IWmpEffects2) then
      _IWmpEffects2 := nil;

    if Assigned(_IWmpEffects) then
      _IWmpEffects := nil;

    BassWMPVis1.WmpVis := nil;
    Result := True;
  end;

end;
Aber dann weiss ich nicht ob das Plugin sich zu dieser zeit
richtig beendet hat.

gruss

Geändert von EWeiss (31. Jul 2012 um 08:43 Uhr)
  Mit Zitat antworten Zitat