MP3 Daten im BLOB Feld speichern und auslesen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: MP3 Daten im BLOB Feld speichern und auslesen

Beitrag von Lorca »

Frohe Weihnachten euch allen :)

Problem ist gelöst.
Ich hatte angenommen, das dies mit den Methoden der Komponenten möglich ist.
Gelöst habe ich das auf klassische Art.

Nochmals herzlichen Dank euch allen für eure rege Teilnahme :)

Gruß
Lorca

Einlesen der MP3 Files in die DB-Tabelle "AUDIO":
-----
VAR lo_Stream : TFileStream; lp_Data : Pointer; lv_Bytes : TBytes;
BEGIN
lo_Stream := TFileStream.Create( 'Dateiname.MP3', fmOpenRead );
Getmem( lp_Data, lo_Stream.Size );
lo_Stream.ReadBuffer( lp_Data^, lo_Stream.Size );
SetLength( lv_Bytes, lo_Stream.Size );
MOVE( lp_Data^, lv_Bytes[ 0 ], lo_Stream.Size );
Freemem( lp_Data );
TAB_Audio.Edit;
TAB_Audio.FieldByName( 'Data' ).AsBytes := lv_Bytes;
TAB_Audio.Post;
END;


Abspielen der MP3 Daten aus der DB:
---
VAR lo_Stream : TStream; lo_File : TFileStream;
BEGIN
TAB_Audio.Active := True;
lo_File := TFileStream.Create( 'Z:\Temp.mp3', fmCreate );
lo_Stream := TStream( TAB_Audio.CreateBlobStream( TAB_Audio.FieldByName('Data'), bmRead ) );
lo_File.CopyFrom( lo_Stream, lo_Stream.Size );
lo_File.Destroy;
Bass.Audio_Play( 'Z:\Temp.mp3' );
TAB_Audio.Active := False;
End;

Antworten