AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Filteranschlüsse nicht verbunden.
Thema durchsuchen
Ansicht
Themen-Optionen

Filteranschlüsse nicht verbunden.

Ein Thema von chris_82 · begonnen am 11. Dez 2003 · letzter Beitrag vom 12. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#1

Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 22:16
Hab mir folgende Prozedure geschrieben um das einer Webcam dazustellen.
Beim ersten Aufruf ist das kein Problem, da funktioniert alles, wenn ich aber in meiner Listbox ein zweites mal auf die Videoquelle klicke bzw. eine andere auswähle kommt immer die exception Filteranschlüsse nicht verbunden. Woran liegt das, wie kann ich das zum Bsp. in der Exception abfangen?

Delphi-Quellcode:
//Initialisieren des Bildes im VideoWindow
procedure TCapSource.StartCapture(Lbindex:integer; VideoWindow:TVideoWindow);
var index:integer;
    vw:tvideowindow;
begin
  //Klassen instanziieren
  try
  Filtergraph:=TFiltergraph.Create(VideoWindow);
  Filter:=TFilter.Create(VideoWindow);
  SampleGrabber:=TSampleGrabber.Create(VideoWindow);

  VideoWindow.FilterGraph:=Filtergraph;
  SampleGrabber.FilterGraph:=Filtergraph;
  Filter.FilterGraph:=Filtergraph;

  Filtergraph.ClearGraph;
  Filtergraph.Active:=False;
  Filter.BaseFilter.Moniker := Capenum.GetMoniker(Lbindex);
  Filtergraph.GraphEdit := true;
  Filtergraph.Mode := gmCapture;
  FilterGraph.Active := True;

  with Filtergraph as ICaptureGraphBuilder2 do
   RenderStream (@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter,
   SampleGrabber as IBaseFilter, VideoWindow as IBaseFilter);

  FilterGraph.Play;
  except
  end;
  end;
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#2

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 22:38
Gibst du Filtergraph, Filter und SampleGrabber auch wieder frei (bevor du z.B. den Button nochmal anklickst)?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 22:38
Ich hab zwar davon keine Ahnung, aber ich könnte mir denken, woran es liegt.

Du erstellst ja hiermit neue Filter und so.
Delphi-Quellcode:
Filtergraph:=TFiltergraph.Create(VideoWindow);
Filter:=TFilter.Create(VideoWindow);
SampleGrabber:=TSampleGrabber.Create(VideoWindow);

VideoWindow.FilterGraph:=Filtergraph;
SampleGrabber.FilterGraph:=Filtergraph;
Filter.FilterGraph:=Filtergraph;
Bei zweiten Aufruf existieren die aber schon und es entsteht deiser Fehler.

Es gibt demnach also zwei Lösungen:
1: Du fragst vorm erstellen ab, ob sie schon erstellt wurden und erstellst sie nur, wenn sie noch nicht existieren.

2: Oder du gibst die vorher schon erstellten vorher frei.
z.B.:
Delphi-Quellcode:
Filtergraph.Free;
Filter.Free;
SampleGrabber.Free;
...
(die Freigabe sollte aber auch nur gemacht werden, wenn was existiert)


http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
$2B or not $2B
  Mit Zitat antworten Zitat
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 22:55
wie überprüfe ich ob die objekte schon existieren?
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#5

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 23:04
z.B. mit Assigned. Du muss aber nach dem Freigeben das Objekt auf nil setzten (z.B. FreeAndNil zum freigeben verwenden)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 23:21
Es wäre auch sinnvoll, die Objekte vor dem try-Block zu erstellen und dann eine try-finally Konstrukt zu verwenden und die Objekte im finally Abschnitt wieder frei zugen.
Delphi-Quellcode:
  sl := TStringList.Create;
  try
    sl. ...;
  finally
    FreeAndNil(sl);
  end;
Wenn es nicht erzeugt werden kann, ist auch kein Speicher reserviert, den man freigeben müsste. Bei deinem Konstrukt, müsste dir der Compiler übrigens eine Warnung ausgeben. Und Warnungen sollte man nicht ignorieren, die gibt der Compiler nicht nur zum Spaß aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 23:33
dei methode assigned gibt es wohl nicht, und was genau meinst du mit freeandnil..da find ich auch nur free
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#8

Re: Filteranschlüsse nicht verbunden.

  Alt 11. Dez 2003, 23:43
Assigned ist in der Unit Systems.
FreeAndNil ist bei den Indy Komponenten dabei (IdGlobal.pas) und sieht so aus:
Delphi-Quellcode:
procedure FreeAndNil(var Obj);
var
  P: TObject;
begin
  if TObject(Obj) <> nil then begin
    P := TObject(Obj);
    TObject(Obj) := nil; // clear the reference before destroying the object
    P.Free;
  end;
end;
  Mit Zitat antworten Zitat
chris_82

Registriert seit: 26. Aug 2003
112 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Filteranschlüsse nicht verbunden.

  Alt 12. Dez 2003, 00:00
Ja also woran wahrscheinlich das Problem liegt weiß ich jetzt wohl, dank eurer Hilfe, aber ich hab versucht dies auf das Problem umzumünzen, aber so recht will es noch nicht klappen. bekomme immer noch dieselbe Meldung.

Wenn ich FreeandNil benutze, muss ich die Objekte dann immer noch zerstören (.destroy)?

hab mal debuggt, der fehler kommt immer erst, wenn ich

 Filtergraph.Play aufrufe.

edit: hab gesehen Free in der Methode FreeandNil zerstört ja das Objekt schon.
....oop und nun...??
http://www.sengewald.info
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#10

Re: Filteranschlüsse nicht verbunden.

  Alt 12. Dez 2003, 00:05
Wie sieht dein Code jetzt aus?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr.
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