Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TAG в mp3 [D6, WinXP]


Валентин ©   (2004-01-14 03:46:00) 

Здарова мастера, у меня вопрос, как вытащить TAG из mp3 я знаю, как изменить догнал, а вот как сохранить изменения...В этом собственно и проблема(доп.компоненты использовать не хочу).Зарание спасибо
P.S. есль не сложно черкните на мыло valentin_galiaf@rambler.ru


Alex44   (2004-01-29 11:28:00) [1]

Zavisit ot togo, kakoj tag. Esli v1, to prosto perepisat' na
staroe mesto (ili dopisat' k koncu file'a, esli ne bylo).
Esli v2, to slozhnee, t.k. on v nachale. Bol'shinstvo program zapisyvayut na staroe mesto, esli novyj razmer ne bol'she (t.e.,
sohranyayut razmer); esli zhe on bol'she, to pridetsa pisat'
vremennyj file i potom pereimenovyvat'.


Graff   (2004-01-29 01:17:00) [2]

type
  TMP3Tag = record
     FileName, Title, Artist, Album, Year, Comment : string;
  end;

function GetMP3Tag(fn: string): TMP3Tag;
var
 tag : array[0..127] of char;
 f : file;
 i : byte;
 s : string;

 procedure DelSpace(var s: string);
 begin // Удаляет пробелы и символы
                           // #0 в конце строки.
   if length(s) = 0 then exit;
   while s[length(s)] in [' ', #0] do
   begin
     delete(s,length(s),1);
     if s = '' then break;
   end;
 end;

begin
 result.FileName := fn;
 result.Title := '';
 result.Artist := '';
 result.Album := '';
 result.Year := '';
 result.Comment := '';

 AssignFile(F,fn); // Открываем файл
 {$I-} // с проверкой его существования :)
 Reset(F,1);
 Seek(F,FileSize(F)-128); // Читаем тэг - последние 128 байт
 BlockRead(f,tag,128);
 CloseFile(F);
 {$I+}

 if IOResult<>0 then
 begin
   exit;
 end;

 s := '';
 for i := 0 to 127 do
   s := s + tag[i];

 if copy(s,1,3)='TAG' then // В файле есть тэг - разбираем его
 begin
   result.Title := copy(s,4,30);
   DelSpace(result.title);
   result.Artist := copy(s,34,30);
   DelSpace(result.artist);
   result.Album := copy(s,64,30);
   DelSpace(result.album);
   result.Year := copy(s,94,4);
   DelSpace(result.year);
   result.Comment := copy(s,98,30);
   DelSpace(result.comment);
 end;
end;

Нашел на этом же сайте.


zapped   (2004-01-16 22:37:00) [3]

как считываешь, так и пишешь, только наоборот


TrollXP   (2004-01-16 10:26:00) [4]

www.id3.org


VMcL   (2004-01-16 01:31:00) [5]

Я бы еще TFileStreamпорекомендовал.


DrPass   (2004-01-14 21:46:00) [6]

Хм. BlockWrite выучи


Наверх

Титульная страница Поиск, карта сайта Написать письмо