Thema: Delphi Probleme mit Strings

Einzelnen Beitrag anzeigen

boserPascal

Registriert seit: 4. Apr 2006
96 Beiträge
 
Delphi 5 Professional
 
#9

Re: Probleme mit Strings

  Alt 18. Jul 2006, 23:36
hab das ganze mal so abgeändert wie du vorgeschlagen hast, aber nichts.

Delphi-Quellcode:
procedure TForm1.BitBtn4Click(Sender: TObject);
var Datei: file of char;
    Zeile,Tempo: string;
    Buffer: char;
    TAG: TID3TAG;
begin
     if OpenDialog1.Execute then
     begin
          AssignFile(Datei, OpenDialog1.filename);
          Reset(Datei);
          Zeile:='';
          while not eof(Datei) do
          begin
               Read(Datei, Buffer);
               if Buffer = #$0D then
               begin
                    ListBox1.Items.Add(Zeile);
                    TAG:=Lese_ID3Tag(Zeile);
                    if Tag.ID = 'TAGthen
                    begin
                         with Tag do
                              Tempo:=Artist+' - '+Album+' - '+Titel;
                         setLength(Tempo, 128);
                         CheckListBox1.Items.Add(Tempo);
                    end
                    else
                         CheckListBox1.Items.Add(Zeile);
                    Zeile:='';
               end
               else
                   if Buffer >= #$20 then
                      Zeile:=Zeile+Buffer;
          end;
          CloseFile(Datei);
     end;
     caption:='Playlist - '+OpenDialog1.filename;
end;

function TForm1.Lese_ID3Tag(Filename: string):TID3Tag;
var
   Buffer: array[1..128] of char;
   Datei: File;
   mp3hdrread: array[1..4] of byte;
   mp3hdr: longint absolute mp3hdrread;
   tempbyte, bitrateindex, versionindex: byte;
   bitrate, version, layer, groese: longint;
   TAG : TID3Tag;
begin
     try
        AssignFile(Datei, Filename);
        Reset(Datei,1);
        groese:=filesize(Datei);
        blockread(Datei,mp3hdrread,4);
        tempbyte:=mp3hdrread[1];
        mp3hdrread[1]:=mp3hdrread[4];
        mp3hdrread[4]:=tempbyte;
        tempbyte:=mp3hdrread[2];
        mp3hdrread[2]:=mp3hdrread[3];
        mp3hdrread[3]:=tempbyte;
        reset(Datei,1);
        Seek(Datei,FileSize(Datei)-128);
        BlockRead(Datei, Buffer, SizeOf(Buffer));
        CloseFile(Datei);
        bitrateindex:=((mp3hdr shr 12) and $F);
        versionindex:=((mp3hdr shr 19) and $3);
        case versionindex of
             0: version:=3;
             1: version:=0; //unbekannt
             2: version:=2;
             3: version:=1;
        end;
        layer:=4-((mp3hdr shr 17) and $3);
        if version<>0 then
           bitrate:=MPEG_BIT_RATES[version][layer][bitrateindex]
        else
            bitrate:=128;
        with Tag do
        begin
             ID:=copy(Buffer,1,3);
             Titel:=copy(Buffer,4,30);
             Artist:=copy(Buffer,34,30);
             Album:=copy(Buffer,64,30);
             Year:=copy(Buffer,94,4);
             Comment:=copy(Buffer,98,30);
             Genre:=ord(Buffer[128]);
             sample:=sample_rates[version][((mp3hdr shr 10) and $3)];
             dauer:=(groese*8) div ((bitrate)*1000);
             bits:=bitrate;
             vers:=version;
             layers:=layer;
        end;
     except
     end;
     result:=tag;
end;
Stefan
  Mit Zitat antworten Zitat