Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#35

AW: C++ Delphi Übersetzung 3DYDYoutube Filter

  Alt 5. Okt 2018, 17:53
Das tue ich doch.
hr := SupportedSites.Test(PWideChar(MediaFile), false, url);
Nee, du prüfst aber doch das hr dann mit dem SUCCEEDED() Makro. Das Problem ist, dass sowohl S_OK , als auch S_FALSE keinen Fehler indizieren, weshalb du immer true erhälst. Du musst nach dem SUCCEEDED() Check nochmal genau prüfen, also:
Delphi-Quellcode:
if SUCCEEDED(hr) then
begin
  if (hr = S_OK) then
    // String sollte etwas beinhalten
  else if (hr = S_FALSE) then
    // String sollte nil sein
  else
    // nicht dokumentiert
end;

Die frage die da noch wäre ist das nun eine Procedure oder eine Funktion!
Code:
STDMETHOD(Test)(__in LPCWSTR url, __in BOOL explicitly, __out_opt BSTR* canonical_url) = 0;
...
Ich habe es als Function ausgelegt da ich nicht weis wie ich sonst auf S_OK hin testen soll.
Das ist auch korrekt so, da STDMETHOD definiert ist als #define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method , also als Funktion mit HRESULT als Rückgabewert (nicht zu verwechseln mit STDMETHOD_ ).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat