Ich habe mir den Memp mal angesehen und das Delphi-Projekt für Lazarus konvertiert. Das mache ich zum ersten Mal und bin begeistert, wie gut das inzwischen geht.
Seltsam, bei einem Rechner wird die genannte Stelle akzeptiert, der andere stolpert aber auch über den Aufzählungstyp mit Wertzuweisung:
Ich habe zunächst die Zahlenwerte weggelassen, aber damit läuft das Programm nicht, weil die Zahlenwerte nicht mehr stimmen. Dann habe ich vor FV_2 zwei Dummy-Werte ergänzt, damit die Nummerierung wieder stimmt, aber das erzeugt extrem viel korrekturen, da viele Konstanten als Array[TID3v2FrameVersions] deklariert sind. Schließlich bin ich auf die Lösung
gekommen. Auch hier muss man noch korrigieren: überall wo in Quelltext einer der Bezeichner FV_2, FV_3, FV_4 vorkommt, muss man das FV_ wegeditieren, aber der Compiler sagt ja, wo's noch zwickt.
Aber das ist nicht alles, es kommt noch mehr. Bei den Units mp3fileUtils und PlayerKlasse musste ich noch "Windows" in die Uses-Zeile schreiben - geht vielleicht auch anders, aber ich wollte ein schnelles Ergebnis. Bei Unit1 muss "XPManifest1: TXPManifest" aus der Deklaration von TForm1 gelöscht werden; ebenfalls, mit einem Editor Unit1.lfm öffnen und den Block zu XPManifest1 löschen. Stattdessen in den Projekt-Optionen unter "Anwendung" das Häkchen vor dem Manifest setzen.
Das größte Rätsel-Raten bereitete mir in der Bass Unit das Konstrukt
Code: Alles auswählen
const
// special STREAMPROCs
STREAMPROC_DUMMY : STREAMPROC = STREAMPROC(0); // "dummy" stream
STREAMPROC_PUSH : STREAMPROC = STREAMPROC(-1); // push stream
Zum Glück ist das hier im Forum schon einmal behandelt worden (--> Forumsuche!), die Lösung ist
Code: Alles auswählen
const
// special STREAMPROCs
{$IFDEF DELPHI}
STREAMPROC_DUMMY : STREAMPROC = STREAMPROC(0); // "dummy" stream
STREAMPROC_PUSH : STREAMPROC = STREAMPROC(-1); // push stream
{$ELSE}
STREAMPROC_DUMMY = pointer(0); // "dummy" stream
STREAMPROC_PUSH = pointer(-1); // push stream
{$ENDIF}
Damit war der Compiler zufrieden. Blieb noch der Absturz beim Starten wegen fehlender bass.dll. Aber nach dem Rüberkopieren dieser dll ins exe-Verzeichnis läuft das Programm und spielt meine mp3's ab.