![]() |
MediaPlayer wieder Freigeben
Hallo,
Wie kann ich den MediaPlayer für Dateien wenn er nicht gebraucht wird wieder Freigeben? Folgendes Problem beim ändern der ID3v1 / v2 Einträge kann ich jedoch nicht wieder die Änderungen neu Speichern. Ich benutze folgendes:
Delphi-Quellcode:
Ich denke das es am Media Player liegen sollte.
MediaPlayer1.FileName := playdir + playfile;
MediaPlayer1.Open; MediaPlayer1.Stop; MediaPlayer1.EnabledButtons:=[btPlay, btPause, btStop]; |
Re: MediaPlayer wieder Freigeben
Schon mal Close probiert?
Und bei nem kurzen Blick in die Delphi-Hilfe bin ich auf die Eigenschaft Shareable gestoßen, die standardmäßig false ist. Evtl. kann man ja schreibend auf die Datei zugreifen, wenn man das auf True setzt... |
Re: MediaPlayer wieder Freigeben
bei Close kommt eine meldung von wegen kein PCI Midi Gerät ausgewählt
|
Re: MediaPlayer wieder Freigeben
Open öffnet ein Gerät, Close schließt es wieder. Abspielen geht dann natürlich nicht mehr. Daher mein Hinweis auf Shareable, bei dem ich aber nicht weiß, ob das was bringt, weil ich mit dem TMediaplayer keine Erfahrung habe.
|
Re: MediaPlayer wieder Freigeben
okay ich hab mir jetzt gedacht ich schmeiße das Close auf den Button "Eintrag Ändern" rein, jedoch speichert er immer noch nicht die Dateien und ich weiß nicht wieso!
|
Re: MediaPlayer wieder Freigeben
Moin!
Eine Möglichkeit:
Delphi-Quellcode:
Alternativ kannst Du
If MediaPlayer1.FileName<>'' then begin
MediaPlayer1.Close; MediaPlayer1.FileName:=''; end; ![]()
Delphi-Quellcode:
@Gausi:
Case Medialayer1.Mode of
mpNotReady, mpStopped, mpPlaying, mpRecording, mpSeeking, mpPaused, mpOpen: Medialayer1.Close; else ShowMessage('Der MP hatte nix geöffnet.'); end; ![]() Grüßle! |
Re: MediaPlayer wieder Freigeben
Hmm. Dann ist das mit dem Shareable wohl ne Sackgasse. Ich kenn ja seinen Code, weil er mich mal per ICQ angesprochen hat. Sein Problem ist ja eigentlich "nur", dass das Schreiben des ID3-Tags schiefläuft. Knackpunkt ist diese Zeile aus meiner ID3-Unit:
Delphi-Quellcode:
die fehlschlägt, wenn die Datei vom Mediaplayer benutzt wird. Ich hatte mal den Mediaplayer-Kram auskommentiert, und dann lief das durch. Meine Idee war, dass der Mediaplayer durch das Open generell einen Schreibzugriff auf die Datei unterbindet und die Property Shareable sah da ganz gut aus. Näher hab ich mich damit nicht beschäftigt.
Stream := TFileStream.Create(Filename, fmOpenReadWrite or fmShareDenyWrite);
|
Re: MediaPlayer wieder Freigeben
also am MediaPlayer kann es nicht liegen Gausi mit dem Tipp von Sunlight7 geht's auch nicht! ich werde es jetzt mal als einzel Projekt nachbauen und gucken ob der Fehler auch auftritt wenn ja dann muss ein Logik Fehler da sein bei mir.
Melde mich über Edit ^^ Edit: Scheint ein prinzipielles Denk problem meiner Seite zu seien! Ich hab dir mal meine Unit per E-Mail geschickt |
Re: MediaPlayer wieder Freigeben
Ich glaube, ich klinke mich jetzt an dieser Stelle aus. ;-) Ich halte es für unsinnig, sowohl per ICQ und Mail, als auch hier im Forum zu diskutieren. Ich denke, das Forum sollte die primäre Anlaufstelle sein.
Habe dein Projekt per Mail bekommen, compiliert und ID3-Tags erfolgreich geändert. Das einzige unsinnige, was mir noch aufgefallen ist, ist das:
Delphi-Quellcode:
Wenn man Felder für den ID3v2 oder v1 Tag ausfüllt und speichern klickt, dann erwarte ich als User, dass das auch gespeichert wird.
if Id3v1Tag.TagExists = CheckBox1.Checked then
Hinweis: Die WriteToFile-Routinen überprüfen natürlich vorher, ob in der Datei bereits ein Tag vorhanden ist. Wenn ja, wird der alte überschrieben, wenn nein wird einer erstellt. Und zum Mediaplayer. Fakt ist doch: Wenn du das Mediaplayer-Gedöns aus dem anderen Projekt auskommentierst, dann werden die Tags geändert - hab ich grad nochmal ausprobiert. Wie du jetzt auf die Idee kommst, dass dein Problem nicht am Mediaplayer liegt, ist mir schleierhaft. |
Re: MediaPlayer wieder Freigeben
so gausi klar ist die zeile quatsch ^^
Nur ich habe gerade raus gefunden durch rum fummeln das er die ID3V1 Einträge Speichert! Nur nicht die ID3v2 Einträge... nur warum? Folgendes Benutze ich zum Speichern:
Delphi-Quellcode:
zwecks media player: ich habs so gemacht das wenn jetzt auf Eintrag ändern geklickt wird automatisch der MP geschloßen wird also kanns so gesehen nicht mehr an ihm liegen.
procedure TForm4.Button3Click(Sender: TObject);
begin if Id3v1Tag.Tagexists = True then begin Id3v1Tag.Title := Edit_Titel.Text; Id3v1Tag.Artist := Edit_Artist.Text; Id3v1Tag.Album := Edit_Album.Text; //Id3v1Tag.Comment := Edit_Comment.Text; Id3v1Tag.Genre := Edit_Genre.Text; Id3v1Tag.Track := Edit_ID.Text; Id3v1Tag.Year := Edit_Jahr.Text; // Tag in die Datei schreiben id3v1Tag.WriteToFile(Edit1.Text); end; /////////////////////////////////////////// if Id3v2Tag.exists = True then begin Id3v2Tag.Title := Edit2_Titel.Text; Id3v2Tag.Artist := Edit2_Artist.Text; Id3v2Tag.Album := Edit2_Album.Text; //Id3v2Tag.Comment := Edit2_Comment.Text; Id3v2Tag.Genre := Edit2_Genre.Text; Id3v2Tag.Track := Edit2_ID.Text; Id3v2Tag.Year := Edit2_Jahr.Text; // Weitere Textframes setzen ID3v2Tag.Copyright := Edit2_Copyright.Text; ID3v2Tag.OriginalArtist := Edit2_OriginalArtist.Text; id3v2Tag.WriteToFile(Edit1.Text); end; close; end; Edit: bins WE über nicht da :/ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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 by Thomas Breitkreuz