Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Verwenden von IAMMediaContent

  Alt 5. Okt 2018, 23:40
Nun Praxis und versuch sind zwei Dinge.
Die Anwendung stürzt nun ab bei FreeMem.
Was ich dir einen Beitrag vorher #9 auch erläutert habe.
Hallo ?

Ich mache es genauso wie von dir gezeigt und verwende genau deine Funktion.
Deine Antwort..
Zitat:
So sollte das tun
Aber tut es nicht.

Schritt für Schritt also siehe..
Delphi-Quellcode:
var
  FileName: string;
//..
      if InStr(lowercase(FileName), '//') = 1 then
      begin
        hr := KVideo_GetYoutubeFilterTitle(FileName);
        if SUCCEEDED( hr)then
          SKAERO_SetCTLText(gP.MainHandle, FileName);
      end else
      SKAERO_SetCTLText(gP.MainHandle, FileName);
Delphi-Quellcode:
function KVideo_GetYoutubeFilterTitle(out Title: string): HRESULT; stdcall;
begin
  result := E_FAIL;

  if not Assigned(EVMRPlayer) then
    exit;

  result := EVMRPlayer.GetYoutubeFilterTitle(Title);
end;
Delphi-Quellcode:
function TEVMRPlayer.GetYoutubeFilterTitle(out Title: string): HRESULT;
var
  MediaContent: IAMMediaContent;
  pbstrTitle: PWideChar;
begin

  Result := E_FAIL;

  if not Assigned(srcFilter) then
    exit;

  if IsUrl then
  begin
    if DYDYoutubeFilter <> nil then
    begin
      srcFilter.QueryInterface(IID_IAMMediaContent, MediaContent);
      Result := MediaContent.get_Title(pbstrTitle);
      if not SUCCEEDED(Result) then
        ReportError('YoutubeFilterTitle fails', Result)
      else
      begin
        Title := pbstrTitle;
        FreeMem(pbstrTitle); // Crash!
      end;
    end;
  end;
end;
Also was denn nun?
Deine Methode oder nicht!
Dein FreeMem lässt die Anwendung auf jeden fall abstürzen genau das gleiche wenn ich pbstrTitle auf Nil setze.
Mit der Freigabe wird das wohl nix oder?

gruss

Geändert von EWeiss ( 6. Okt 2018 um 00:05 Uhr)
  Mit Zitat antworten Zitat