MP3 tag.. lamerski problem

Odpowiedz Nowy wątek
2003-11-28 18:37

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

Taki oto kodzik:

Type
TID3Tag = record
ID:string[3];
Titel:string[30];
Artist:string[30];
Album:string[30];
Year:string[4];
Comment:string[30];
Genre:byte;
end;
var
ID3Tag:TID3Tag;

procedure Lese_ID3Tag(Filename:string);
var Buffer:array[1..128] of char;
F:File;
begin
try
AssignFile(F, Filename);
Reset(F,1);
Seek(F,FileSize(F)-128);
BlockRead(F, Buffer, SizeOf(Buffer));
CloseFile(F);
with ID3Tag 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]);
end;
finally

end;
end;

Celem jest oczywiście odczyt taga MP3... problem pojawia się przy niektórych plikach, występuje "<font color=red>File Acces Error</font>" - myślałem, że <b>Try</b> coś da, ale niestety dalej jest to samo. Jak można zabezpieczyć tą procedurkę na wszystkie możliwości.. jeżeli by jakiś mp3 nie miał TAGa, to niech nic nie zapisuje do zmiennych...


Pozostało 580 znaków

Anonim
2003-11-28 19:58
Anonim
0

sciagnij sobie id3tag.zip to jest chyba nawet na tej stronie :)

Pozostało 580 znaków

2003-11-28 22:37

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

0

Błąd przy plikach readonly/hidden/system. Otwórz jako tylko do odczytu. Zmienna filemode:=blebleble (odpowiednio), oczywiście zanim użyjesz reset. Aha zmienna globalna, więc uważaj na jej stan.

// do postu poniżej:
Detox, sorry, ale myślałem, że jak już odpalisz helpa, to się doczytasz.


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa.

'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E'

extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers

Pozostało 580 znaków

2003-11-29 08:46

Rejestracja: 17 lat temu

Ostatnio: 4 lata temu

0

Hmm zrobiłem tak i nadal nie działa...

var
FileMode: Byte = 2;

procedure Lese_ID3Tag(Filename:string); // odczyt MP3 TAG
var
  Buffer: array[1..128] of char; // Bufer
  F:File; // plik MP3
  DwAttr: Dword; // Atrybut
begin

  DwAttr := GetFileAttributes(PChar(Filename));
  if dwattr and File_Attribute_ReadOnly = File_Attribute_ReadOnly then
    FileMode := 0
  else
    FileMode := 2;

AssignFile(F, Filename);
Reset(F,1);
Seek(F,FileSize(F)-128);
BlockRead(F, Buffer, SizeOf(Buffer));
CloseFile(F);
with ID3Tag do
begin
ID:=copy(Buffer,1,3);
Title:=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]);
end;

end;

Pozostało 580 znaków

2003-11-29 08:56

Rejestracja: 17 lat temu

Ostatnio: 10 lat temu

0

Może dlatego nie działa, że zmienna FileMode to zmienna globalna, ale zadeklarowana już w SysUtils, czyli nie musisz (a moze nawet nie powinieneś) jej deklarowac u siebie.


80% problemów które pojawiają sie na forum w postach rozwiązaliby samodzielnie ich autorzy, gdyby nie mieli internetu...

Pozostało 580 znaków

2003-12-01 05:55

Rejestracja: 17 lat temu

Ostatnio: 3 lata temu

Lokalizacja: Kielce

0

[...]Seek(F,FileSize(F)-128);[...]

Po tej linijce powinieneś odczytać tekst w następnych 3 znakach, i sprawdzić czy text = 'TAG'; ewentualnie w JediVCL jest 4 komponenty do odczytu tagów mp3 (ID3v1 i ID3v2)


HAKGER - 50% Complete

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0