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