Delphi-PRAXiS
Seite 3 von 5     123 45      

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)

EWeiss 5. Okt 2018 00:42

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?

Danke!
Zitat:

Nene, das ist Murks
Könnte das mit dem OleStr nachher auch noch mal versuchen wenn PWideChar nichts bringt.
Ok dann lieber nicht ;)

Mein Problem ist das hr = 0 zurück liefert von daher geht man erst mal davon aus das alles in Ordnung ist.
Nur zurückgegeben wird nix.
Zitat:

Ist der String tatsächlich valide, aber leer, oder nil ?
Leer bzw. NIL

Zitat:

You must query it from the filter instance. Example (C++):
Code:
 if (FAILED(hr = source.CoCreateInstance(__uuidof(IYoutubeSource)))) {
      return VLC_EGENERIC;
Zitat:

solltest du mit QueryInterface()
Er erstellt den Source über CoCreateInstance.

Hmmm...

gruss

KodeZwerg 5. Okt 2018 00:49

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
[QUOTE=EWeiss;1414962]
Zitat:

Zitat von KodeZwerg (Beitrag 1414960)
Zitat:

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

ICh stocher hier auch nur im Dunkeln, so eventuell? Bin Wiederholungstäter im Murksen ;)


EWeiss 5. Okt 2018 00:50

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

Delphi-Quellcode:
 hr := OleCheck(SupportedSites.Test(PWideChar(MediaFile), false, url));

Nee ;)
Ich brauche kein OleCheck hr ist mein OleCheck!
Ist hr = 0 dann sollte normalerweise alles in Ordnung sein.

gruss

EWeiss 5. Okt 2018 02:30

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
So bin etwas weiter.. Mist wenn man alles selbst herausfinden muss ohne vernünftiges SDK :stupid:

Habe eine IID_angelegt und zwar die des Interface ISupportedSites.
Delphi-Quellcode:
IID_ISupportedSites: TGUID = '{FF762ACC-13EC-463A-A29C-FD4B0CD3E019}';


War mir jetzt nicht sicher ob ich mit dieser IID_ arbeiten kann scheint aber richtig zu sein um das Interface zu Initialisieren.

Delphi-Quellcode:
  IsURL := (LeftStr(MediaFile, 4) = 'http') or (LeftStr(MediaFile, 5) = 'https');

  if IsUrl then
  begin
    if DYDYoutubeFilter <> nil then
    begin
      hr := CoCreateInstance(CLSID_DYDYoutube, 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
          x := SupportedSites.GetCount;
          if x <> 0 then
          begin
            for IntI := 0 to x - 1 do
             Test := SupportedSites.GetName(IntI);
          end;
        end;
      end;
    end;
  end;
Die Url bei SupportedSites.Test ist immer noch Nil sei's drum.
So wie ich das hier verstehe..
Zitat:

When S_OK is returned, canonical_url will contain canonical page url, otherwise
it will not be changed
Wenn S_OK also die Rückgabe 0 ist dann müsste mir die URL einen wert zurück liefern, tut sie aber nicht.
GetCount hingegen stimmt genauso werden mir die unterstützten Url's zurückgegeben die der Filter unterstützt.
Siehe Pic! Die werte stimmen alle.

Muss jetzt noch schauen wie ich das mit der Url hinbekomme.

Das stimmt jetzt schon mal!
Delphi-Quellcode:
    function GetVersion: UINT; stdcall;
    // Number of supported sites
    function GetCount: UINT; stdcall;
    // Get site name or NULL if index >= GetCount()
    function GetName(index: UINT): PWideChar; stdcall;
gruss

Rollo62 5. Okt 2018 11:31

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

Habe leider auch nicht wirklich Ahnung, wie BSTR* definiert ist (die wäre wichtig),
Hat mich jetzt auch interessiert, was ich hier finde ist allerdings gruselig :shock:

Ist das wohl aktuell ?

Fritzew 5. Okt 2018 12:20

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Also BSTR ist WideString auf Delphi Seite.
Delphi-Quellcode:
function GetName(index: UINT): WideString; stdcall;
function Test(url: PWideChar; explicitly: BOOL; out canonical_url: WideString): HRESULT; stdcall;
wäre meines Wissens nach die richtige Übersetzung

Zacherl 5. Okt 2018 12:43

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

Zitat von Rollo62 (Beitrag 1414996)
Zitat:

Habe leider auch nicht wirklich Ahnung, wie BSTR* definiert ist (die wäre wichtig),
Hat mich jetzt auch interessiert, was ich hier finde ist allerdings gruselig :shock:

Zitat:

Zitat von Fritzew (Beitrag 1415007)
Also BSTR ist WideString auf Delphi Seite.
Delphi-Quellcode:
function GetName(index: UINT): WideString; stdcall;
function Test(url: PWideChar; explicitly: BOOL; out canonical_url: WideString): HRESULT; stdcall;

Mhh, schwer zu sagen, was hier stimmt. Ich hatte ein paar Posts zuvor eine andere Definition gefunden. Das
Delphi-Quellcode:
WideString
kommt mir allerdings sehr komisch vor, da dies ein Delphi Typ mit Ref-Counter und allem drum und dran ist.

So oder so ist der Output Zeiger ja
Delphi-Quellcode:
nil
. Entsprechend der Dokumentation der Funktion ist das ja in Ordnung, falls
Delphi-Quellcode:
S_FALSE
zurückgeliefert wird. Jetzt kommt der Knackpunkt:
Zitat:

Zitat von MSDN
The constants S_OK and S_FALSE are both success codes

Entsprechend liefert das
Delphi-Quellcode:
SUCCEEDED()
Makro jeweils
Delphi-Quellcode:
true
zurück. Hier müsstest du also nachher noch explizit auf
Delphi-Quellcode:
S_OK
oder
Delphi-Quellcode:
S_FALSE
testen.

Fritzew 5. Okt 2018 13:11

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
http://docwiki.embarcadero.com/Libra...tem.WideString

Also wir benutzten dass hier häufig. (gemixte source VS C++ und Delphi)
Das schöne daran, Windows übernimmt die Speicherverwaltung.
Aber: Es ist nicht unbedingt das schnellste.

Zacherl 5. Okt 2018 13:17

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

Zitat von Fritzew (Beitrag 1415020)

Dann hätten wir wohl auch hier jetzt die korrekte Übersetzung :thumb:

EWeiss 5. Okt 2018 14:28

AW: C++ Delphi Übersetzung 3DYDYoutube Filter
 
Ok Danke euch..
Delphi-Quellcode:
function GetName(index: UINT): PWideChar; stdcall;


Hmm.. bin mir nicht sicher und zwar deshalb weil GetName mir die richtigen werte liefert ;)
Dann gibt es noch den Unterschied BSTR und BSTR*


gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr.
Seite 3 von 5     123 45      

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