![]() |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
Getestet. Falsch! liefert leer String zurück.
Delphi-Quellcode:
function GetName(index: UINT): WideString; stdcall;
Richtig!
Delphi-Quellcode:
function GetName(index: UINT): PWideChar; stdcall;
PWideString liefert falsche Werte. gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
Das tue ich doch.
Delphi-Quellcode:
hr := SupportedSites.Test(PWideChar(MediaFile), false, url);
Die frage die da noch wäre ist das nun eine Procedure oder eine Funktion!
Code:
Sieht mir nach procedure aus, wenn dem so ist wie soll ich dann auf S_OK\S_FALSE testen?
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. gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Wäre "GetLastError" ne Möglichkeit?
|
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
Delphi-Quellcode:
dann mit dem
hr
Delphi-Quellcode:
Makro. Das Problem ist, dass sowohl
SUCCEEDED()
Delphi-Quellcode:
, als auch
S_OK
Delphi-Quellcode:
keinen Fehler indizieren, weshalb du immer
S_FALSE
Delphi-Quellcode:
erhälst. Du musst nach dem
true
Delphi-Quellcode:
Check nochmal genau prüfen, also:
SUCCEEDED()
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; Zitat:
Delphi-Quellcode:
definiert ist als
STDMETHOD
Delphi-Quellcode:
, also als Funktion mit
#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
Delphi-Quellcode:
als Rückgabewert (nicht zu verwechseln mit
HRESULT
Delphi-Quellcode:
).
STDMETHOD_
|
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
Werde das mal mit SUCCEEDED ausprobieren (nicht essen nur testen ) :) Die frage ist nur was mache ich mit
Delphi-Quellcode:
if (hr = S_OK) then
Denn wenn die URL <> NIL dann weis ich es nach dem Aufruf der Funktion was nutzt mir eine nochmalige gegen Prüfung? Also was soll ich da reinpacken // String sollte etwas beinhalten gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Habe es jetzt mal so gemacht..
Delphi-Quellcode:
Aber sehe keinerlei unterschiede zwischen
if IsUrl then
begin if DYDYoutubeFilter <> nil then begin hr := CoCreateInstance(CLSID_3DYDYoutubeSource, nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, Source); if SUCCEEDED(hr) then begin Source.QueryInterface(IID_ISupportedSites, SupportedSites); // Version := SupportedSites.GetVersion; hr := SupportedSites.Test(PWideChar(MediaFile), false, url); if SUCCEEDED(hr) then begin if (hr = S_OK) then begin x := SupportedSites.GetCount; if x <> 0 then begin for IntI := 0 to x - 1 do Test := SupportedSites.GetName(IntI); end; end; end; end; end; end;
Delphi-Quellcode:
hr ist ja 0 also S_OK
hr := SupportedSites
eine nochmalige Abfrage von
Delphi-Quellcode:
ist für mich unverständlich den ich weis doch das hr = 0 ist.
if (hr = S_OK) then
Mit der erneuten abfrage ist das ergebnis gleich URL ist LEER obwohl ich nochmals gegenprüfe und hr = 0 ist siehe Pic. Hmmm... unverständlich gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Das Problem hier ist das Delphi und C++ unterschiedlicher Meinung sind wie
Result Parameter übergeben werden. Bin jetzt nicht an meinem Büro Rechner aber ich würde sagen wenn Du zb.
Delphi-Quellcode:
mal abänderst zu
function GetName(index: UINT): WideString; stdcall;
Delphi-Quellcode:
könnte es gehen.
procedure GetName(index : UINT; out Result : WideString); stdcall;
Eventuell auch die Reihenfolge der Parameter tauschen functionen in Interfaces die kein Result liefern sind sowieso..... @Eweis: Du kannst es mir auch Mailen dann schaue ich drüber. (nicht vor Montag) |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Nein das geht nicht.
Es muss
Delphi-Quellcode:
function GetName(index: UINT): PWideChar; stdcall;
sein. Das funktioniert ja auch nur die Rückgabe der URL nicht. Habe bald das Gefühl das in dem Filter einiges im argen ist. Der Programmierer hat eine riesen Support Seite mit Formular usw.. wenn man aber was schreibt dann kommt nix. Deshalb stehe ich auf den schlauch ;) Wenn ich das nicht klären kann werde ich den Support für den Filter einfach wieder entfernen. ;) Zitat:
PWideChar! Zitat:
gruss |
AW: C++ Delphi Übersetzung 3DYDYoutube Filter
Zitat:
Also in COM immer function(Parameter.. ; Out Result : type) : HRESULT; das ist der von Microsoft eigentlich gewünschte Weg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz