Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#4

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 09:58
Zitat von Nils_13:
1. Das MUSS in OnDestroy trotzdem stehen, da ich sonst eine AV beim Beenden des Programms bekomme.
2. Wo soll dann der Freigabecode in Doppelklick hin ?
Wenn ich noch
Delphi-Quellcode:
with frmVideo do
begin
  if Filtergraph.Active then
  begin
    FilterGraph.ClearGraph;
    FilterGraph.Free;
    VideoWindow.Free;
  end;
end;
vor den Abspielcode setze, wird eine AV bei der markierten Zeile hervorgerufen:
Delphi-Quellcode:
frmVideo.Show;
with frmVideo do
begin
  if not FilterGraph.Active then
  begin
   --> if not FilterGraph.Active then <--
      FilterGraph.Active := true;
    FilterGraph.Stop;
    FilterGraph.ClearGraph;
    FilterGraph.RenderFile(fFiles[playindex].pfad);
    FilterGraph.play;
    pause := True;
  end;
end;
Nee hast mich falsch verstanden!
Ein AV bekommst du deshalb weil du den FilterGraph neu initialisierst und er noch nicht freigegeben ist
Bei jeden Film wird eine neue Instanz von FilterGraph gebildet was bedeutet
wird diese nicht vorher beendet bekommst du einen AV.

Du kannst if not FilterGraph.Active nicht aufrufen wenn du einen doppelklick auf die Liste machst
FilterGraph dürfte dann schon nicht mehr existieren.
Mache doch eine Public oder Globale Variable welche dir ermöglicht
den status unabhängig von FilterGraph zu überprüfen.

Beispiel:
ISVIdeoPlaying : Boolean;
Das einfügen nachdem ein Video spielt logischer weise auf True setzen
Wenn du nun auf die Liste klickst dieses Variable abfragen
Wenn True dann FilterGraph beenden, neu initialisieren und fertig.

PS: Am besten nicht im Doppelklick event sondern im Mouseup Event
Die Liste darf nicht mehr den Focus habe wenn du FilterGraph neu initialisierst.
Und noch was FilterGraph.Free; muss immer ausgeführt werden bevor du ein
neues Video abspielst.
VideoWindow.Free; nicht unbedingt .. wenn du es mit einer PIcBox(Canvas) verbunden hast.
Aber auf jedenfall wenn du dein Projekt beendest.

Gruß
  Mit Zitat antworten Zitat