Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ C++ Delphi Übersetzung 3DYDYoutube Filter (https://www.delphipraxis.net/198084-c-delphi-uebersetzung-3dydyoutube-filter.html)

Zacherl 4. Okt 2018 23:56

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Habe leider auch nicht wirklich Ahnung, wie
Delphi-Quellcode:
BSTR*
definiert ist (die wäre wichtig), aber die Übersetzung als
Delphi-Quellcode:
out string
ist ziemlich sicher falsch (den Delphi String Typen kennt C++ nicht).

KodeZwerg 5. Okt 2018 00:07

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
WideString bzw PChar sollte ein BSTR darstellen falls das hilft.

EWeiss 5. Okt 2018 00:13

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

Zitat von KodeZwerg (Beitrag 1414952)
WideString bzw PChar sollte ein BSTR darstellen falls das hilft.

Soweit bin ich auch schon das es Widestring ist.. (Wenn schon dann PWideChar aber auch schon versucht kommt nix bei rum)
Es scheint aber ein Pointer zu sein
Code:
BSTR*
Nun in dem Fall wäre es PWideString und das hab ich schon versucht es liefert keinen verwendbaren string zurück.

Hier ist irgend etwas noch unverständlich für mich also die Übersetzung.
Code:
CComPtr<IBaseFilter> source;
 if (FAILED(hr = source.CoCreateInstance(__uuidof(IYoutubeSource)))) {
     return VLC_EGENERIC;
 }
 CComQIPtr<ISupportedSites> ss = source;
 if (!ss) {
     return VLC_EGENERIC;
 }
 CComBSTR url;
 if (S_OK != (hr = ss->Test(original_url.c_str(), FALSE, &url))) {
     return VLC_EGENERIC;
 }
bin mir nicht sicher ob das richtig ist!
Delphi-Quellcode:
 
var
  URL: PWideString;
  Source: IBaseFilter; //oder IFileSourceFilter
//...
if DYDYoutubeFilter <> nil then
   begin
     hr := CoCreateInstance(CLSID_DYDYoutube, nil, CLSCTX_INPROC_SERVER, IID_IBaseFilter, Source);
     if SUCCEEDED(hr) then
       SupportedSites := ISupportedSites(Source);
       hr := SupportedSites.Test(PWideChar(MediaFile), false, url);
       if SUCCEEDED(hr) then
       begin

       end;
   end;
Source basierend auf IBaseFilter oder auf IFileSourceFilter.
Zitat:

ISupportedSites IID is {FF762ACC-13EC-463A-A29C-FD4B0CD3E019} (see SDK). You must query it from the filter instance. Example (C++):
Nun das SDK ist ja mein Problem ;) blicke da nicht wirklich durch.

gruss

KodeZwerg 5. Okt 2018 00:20

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Mir fehlt da gerade ein Testprojekt, versuche mal PWideChar anstelle PWideString.
Eventuell muss man noch mit SetLength() da was machen?
Was sagt Debugger zu URL?

EWeiss 5. Okt 2018 00:21

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

Zitat von KodeZwerg (Beitrag 1414954)
Mir fehlt da gerade ein Testprojekt, versuche mal PWideChar anstelle PWideString.

Zitat:

Soweit bin ich auch schon das es Widestring ist.. (Wenn schon dann PWideChar aber auch schon versucht kommt nix bei rum)
Ich muss die filter instance über CoCreateInstance erstellen nur auf welcher Basis.

EDIT:
Und das ist auch fraglich..
Delphi-Quellcode:
SupportedSites := ISupportedSites(Source);
Zitat:

Was sagt Debugger zu URL?
Sagte ich das nicht schon ? Nichts String ist immer leer. ;)

Zitat:

Eventuell muss man noch mit SetLength() da was machen?
Nö die URL wird zurückgegeben..

gruss

Zacherl 5. Okt 2018 00:31

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

Zitat von EWeiss (Beitrag 1414956)
Delphi-Quellcode:
SupportedSites := ISupportedSites(Source);

Bin wirklich kein Experte mit dem COM Kram, aber denke hier solltest du mit
Delphi-Quellcode:
QueryInterface()
bzw.
Delphi-Quellcode:
Supports()
arbeiten statt.

Ist der String tatsächlich valide, aber leer, oder
Delphi-Quellcode:
nil
? Und hast du jetzt
Delphi-Quellcode:
PWideChar
oder
Delphi-Quellcode:
var PWideChar
genommen? Wenn die Deklaration hier richtig ist:
Code:
typedef unsigned short wchar_t;
typedef wchar_t WCHAR;
typedef WCHAR OLECHAR;
typedef OLECHAR* BSTR;
sollte letzteres korrekt sein.

EWeiss 5. Okt 2018 00:38

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

aber denke hier solltest du mit QueryInterface() bzw. Supports() arbeiten statt.
Werde das mal versuchen Danke..
Zitat:

Und hast du jetzt PWideChar oder var PWideChar genommen? Wenn die Deklaration hier richtig ist:
PWideString kann es aber auch nochmal mit PWideChar angehen.

gruss

Zacherl 5. Okt 2018 00:39

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

Zitat von EWeiss (Beitrag 1414958)
PWideString kann es aber auch nochmal mit PWideChar angehen.

Achso, ne wenn muss es
Delphi-Quellcode:
PWideChar
sein. Denke sogar eher
Delphi-Quellcode:
var PWideChar
der Typdefinition nach zu schließen.

KodeZwerg 5. Okt 2018 00:39

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

Zitat von EWeiss (Beitrag 1414953)
Delphi-Quellcode:
       hr := SupportedSites.Test(PWideChar(MediaFile), false, POleStr(url));

ICh stocher hier auch nur im Dunkeln, so eventuell?

Zacherl 5. Okt 2018 00:40

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Zitat:

Zitat von KodeZwerg (Beitrag 1414960)
Zitat:

Zitat von EWeiss (Beitrag 1414953)
Delphi-Quellcode:
       hr := SupportedSites.Test(PWideChar(MediaFile), false, POleStr(url));

ICh stocher hier auch nur im Dunkeln, so eventuell?

Nene, das ist Murks :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz