Einzelnen Beitrag anzeigen

Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
905 Beiträge
 
Delphi 12 Athens
 
#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.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat