Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Mp3FileUtils.pas Zugriffsverletzung beim schreiben von Tags.

  Alt 10. Mai 2011, 20:13
Wo wird die Klasse erzeugt Id3v2Tag?
In den Demos vermutlich im OnCreate der Form. Wenn der Tag erst ausgelesen wird, dann in den Edits einige Infos geändert werden bevor wieder gespeichert wird, kann man sich in der ButtonSaveClick-Methode das erneute auslesen sparen.

ABER: Der Code ist Murks! Ich hoffe mal nicht, dass das so in den Demos drinsteht! (vermutlich nicht, schließlich wird der Stream nur zum lesen geöffnet. )

Id3v2Tag.WriteToStream(Stream); sollte eigentlich NIE direkt verwendet werden. Denn dadurch wird nur der Tag in den Stream geschrieben. Einfach so. Dabei wird weder der bereits vorhandene Tag sauber entfernt, noch wird getestet, ob das neue Tag-Objekt da überhaupt reinpasst. Dadurch werden dann ggf. Audiodaten überschrieben, oder die Datei wird generell ungültig!

Zum Schreiben IMMER WriteToFile(dateiname) benutzen.

Die Methode ist trotzdem public, weil man sie z.B. nutzen kann, wenn man eine neue Mp3-Datei erstellen will, z.B. bei Webradio-Aufnahme und dort am Anfang einen TId3v2-Tag erstellen möchte.

Edit: Also Den Stream rausschmeißen und stattdessen mit dem FileName arbeiten.
The angels have the phone box.
  Mit Zitat antworten Zitat