Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Anwendung stuerzt ab bei MediaPlayer.open (https://www.delphipraxis.net/151369-anwendung-stuerzt-ab-bei-mediaplayer-open.html)

AnCorr 14. Mai 2010 18:08


Anwendung stuerzt ab bei MediaPlayer.open
 
Hallo zusammen

Ich programmiere meinen 'eigenen' Mp3 Player.
Lief (laeuft) auch alles wunderbar, bis ich heute eine ganz bestimmte Datei abspielen wollte.
Unmittelbar nach dem 'open' stuerzte das Programm ab.
Ich habe den open Befehl in eine try...except...end Konstruktion gesetzt, damit ich den Fehler abfangen kann.
Ausserhalb der IDE (Delphi 2010) funktioniert das, aber innerhalb der IDE beim Debuggen wird das Programm an der Stelle sofort beendet und kehrt auf die IDE zurueck.

Code:
Delphi-Quellcode:
  Mainform.Mpl_Mainform.FileName := Mp3File;
  try
    Mainform.Mpl_Mainform.Open;
  except
    on E:Exception do
      Application.MessageBox(PWideChar('Error opening Mp3 file ' + Mp3File + '!' + chr(10) + 
        E.Message),
        'Mp3Player NG - Open Mp3 file for playing', mb_Ok);
  end;

Ich wuesste nicht, wie ich einen auftretenden Fehler anders abfangen sollte.
Wenn der Fehler auftritt wenn ich mehrere Dateien in eine 'Playliste' laden will, gibt er diese Fehlermeldung ununterbrochen aus. Ich muss das Programm dann ueber den Taskmanager beenden.
Da ich innerhalb der IDE an der Stelle nicht weiterkomme, weiss ich auch nicht, warum die Fehlermeldung andauernd kommmt, und auch keine weiteren Dateien in die 'Playliste' aufgenommen werden. Stattdessen 'versucht' das Programm immer wieder die gleiche Datei zu laden. Das sieht in meinen Augen dann so aus, also ob er die Zaehlervariable der Schleife zum Einlesen der Dateien nicht hochzaehlen kann.

Code:
Delphi-Quellcode:
for i := 0 to Odlg_MediaMgmt.Files.Count - 1 do
begin
  FillLists(Odlg_MediaMgmt.Files[i]);
end;
Aber das eigentliche Problem ist, dass im Debugmodus in der IDE das Programm einfach beendet wird, obwohl ich einen try...except...end Block verwende.

Koennt ihr mir hier weiterhelfen?

Danke im voraus!

Gruss
AnCorr

himitsu 14. Mai 2010 18:17

Re: Anwendung stuerzt ab bei MediaPlayer.open
 
Zitat:

wird das Programm an der Stelle sofort beendet und kehrt auf die IDE zurueck.
Sicher, daß es nicht nur angehalten und die IDE angezeigt wird?


Der Debugger hält nunmal bei Exceptions an, damit man diese Auswerten kann,
aber man kann dennoch weiterarbeiten (z.B. F9 oder F7/F8).

PS: Man kann dem Debugger sagen, daß er bestimmte Exceptions ignorieren soll ... in der Debuggermeldung sollte in D2010 eine entsprechende Checkbox enthalten sein.

AnCorr 14. Mai 2010 18:29

Re: Anwendung stuerzt ab bei MediaPlayer.open
 
Hallo

Danke fuer die schnelle Antwort.

Ja, ich bin mir sicher, dass das Programm komplett 'beendet' wird.
Die IDE haelt nicht an, damit ich auf 'irgendwelche' Variablen etc. zugreifen kann.
Ich befinde mich dann direkt im Editiermodus.

Ich moechte diese Exception auch nicht ignorieren, da ich ja gerne wissen wuerde, warum ich an der Stelle nicht richtig debuggen kann.

Gruss
AnCorr

igel457 14. Mai 2010 21:21

Re: Anwendung stuerzt ab bei MediaPlayer.open
 
Da die vom TMediaPlayer verwendete MCI soweit ich weiß mittlerweile nur ein Wrapper um die DirectShow-Schnittstelle ist, schätze ich mal, dass das Laden eines DirectShow Filters aus irgendeinem Grund fehlschlägt. Da Exceptions, die bei diesem Vorgang auftreten jedoch nicht von der VCL abgefangen werden, beendet sich das Programm komplett.

Soweit meine wilde Theorie.

Was du dagegen tun könntest wäre folgendes:
1. Stürzt das Programm auch auf einem anderen PC ab?
2. Wenn nein, deinstalliere nicht benötige DirectShow-Filter/Dekoderkomponenten auf deinem Rechner
3. Verwende direkt DirectShow oder irgend eine andere Bibliothek und nicht die seit 1991 existierende MCI-Schnittstelle

AnCorr 14. Mai 2010 21:32

Re: Anwendung stuerzt ab bei MediaPlayer.open
 
Hallo igel457

Dass das Programm beendet wird, tritt nur in der IDE beim Debuggen auf.
Ich kann natuerlich nicht auf jeden Rechner Delphi installieren um auszuprobieren wie es sich auf anderen Systemen verhaelt.

Starte ich das Programm ausserhalb der IDE, also direkt vom Windows Explorer oder per Verknuepfung erhalte ich die Fehlermeldung wie vorgesehen, und das Programm laeuft weiter.

Ich arbeite zur Zeit mit Windows 7 Ultimate 64. (Falls das von Wichtigkeit ist)

[edit]
Eigentlich nebensaechlich, aber trotzdem zur Info:
Bei den Dateien handelt es sich ausschliesslich um Mp3 Dateien.
Dabei habe ich jetzt feststellen koennen, dass es am 'eingebetteten' Cover Bild liegt.
Allerdings ist mir der Unterschied bei den 'funktionierenden' und 'fehlerverursachenden' Dateien nicht klar.
In anderen Playern (Windows Media Player, Winamp, MediaMonkey etc.) werden alle Dateien abgespielt.
Ausserdem habe ich alle Dateien selbst von meinen CDs erstellt (AudioGrabber zum Rippen / MediaMonkey zum Taggen). Die Cover habe ich alle selbst eingescannt und auf eine Groesse von ca. 400 pixel x 400 pixel gebracht.
[/edit]


Gruss
AnCorr

igel457 14. Mai 2010 21:53

Re: Anwendung stuerzt ab bei MediaPlayer.open
 
Hallo,

ich habe das schon gelsen und verstanden ;-)

Ein solches Verhalten kann durchaus auf den von mir beschriebenen Fehler hinweisen: Auch ich hatte schon damit zu Kämpfen, dass ein nicht ladbares Modul das Programm beendet, der Fehler jedoch korrekt übergangen wird, wenn das Programm nicht aus der IDE gestartet wird. Da ich in meinem Fall jedoch selbst für das Laden des Moduls zuständig war, konnte ich den Fehler beheben.

Edit: Was genau ist denn die Exception, die geworfen wird (E.Message)?

AnCorr 15. Mai 2010 00:02

Re: Anwendung stuerzt ab bei MediaPlayer.open
 
Hallo igel457

Die Meldung lautet:
"A problem occured in initializing MCI"

Entferne ich das Coverbild aus der/den Datei(en) ist alles o.k.
Nur, wie schon beschrieben, kann ich den unterschied zu allen anderen Dateien nicht sehen.
Sobald ich das Coverbild wieder in die Datei(en) einfuege, tritt das Problem wieder auf.
Ein Test mit 'Analize Mp3 files' des Helium Music Manager 7 zeigt leine Fehler in den Dateien. Auch nicht, wenn die Coverbilder in den Dateien eingebettet sind.

Fuer mich ist das Ganze nicht nachvollziehbar.

Gruss
AnCorr


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz