Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выдираем Тег из mp3

1.8K
28 апреля 2004 года
kas
71 / / 03.02.2004
Помогите почему билдер выводит сообщение об ошибке процессора и доступа к памяти
Код:
#include <windows.h>
#include <iostream.h>
#include <conio.h>

struct
{
char head[3];
char title[30];
char artist[30];
char album[30];
char year[4];
char comment[29];
char track;
char genre[1];
} tag;

bool GetTag(char *filename)
{
FILE *in;
int i;
char *ptr,*dptr;
char tmp[5];

if( (in=fopen(filename,"rb"))==NULL)
{
  cout << "File " << filename << " Not found" << endl;
  return false;
}
 if (fseek(in, -128L, SEEK_END))
 {
   fclose(in);
   cout << "Error: Can't seek ID3TAG label\n" << endl;
   return false;
 }
 if(!fread((char *)&tag,sizeof(tag),1,in))
 {
 fclose(in);
 cout << "Error: Can't Read ID3TAG header\n" << endl;
 return false;
 }
 if( (strncmp("TAG",tag.head,3))!=NULL)
 {
   cout << "Error: Incorect Tag header or not Mp3 file\n" << endl;
   return false;
 }
fclose(in);
delete in,i,ptr,dptr;
}
//----------------------------------------------------

main(int argc, char* argv[])
{

char _head[3];
char _title[30];
char _artist[30];
char _album[30];
char _year[4];
char _comment[29];
char _genre[1];

ZeroMemory(&tag,sizeof(tag));
GetTag("C:\\Cvetut_cvety.mp3");

CharToOem(tag.head,_head);
CharToOem(tag.title,_title);
CharToOem(tag.artist,_artist);
CharToOem(tag.album,_album);
CharToOem(tag.year,_year);
CharToOem(tag.comment,_comment);
CharToOem(tag.genre,_genre);

cout<<"Head - "<<_head<<endl;
cout<<"Title - "<<_title<<endl;
cout<<"Artist - "<<_artist<<endl;
cout<<"Album - "<<_album<<endl;
cout<<"Year - "<<_year<<endl;
cout<<"Comment - "<<_comment<<endl;
cout<<"Track - "<<tag.track<<endl;
cout<<"Genre - "<<_genre<<endl;
return 0;
};
3
28 апреля 2004 года
Green
4.8K / / 20.01.2000
А почему ты ставишь указатель в файле на позицию 128 байт от конца файла
fseek(in, -128L, SEEK_END)
а потом вычитываешь sizeof(tag) байт из него
fread((char *)&tag,sizeof(tag),1,in))
Ты уверен, что sizeof(tag) == 128 ?

И еще вопрос: зачем ты, имея структуру, создаешь отдельно ещё и char _head[3], char _title[30] и т.д. ?
Неужели нельзя просто создать еще один экземпляр структуры?

Кроме того нет смысла использовать глобальный объект tag, тем более, раз уж ты создаешь отдельный метод для считывания тэга.

И ещё один вопрос: ты специально пишешь на C, а не на С++?
1.8K
28 апреля 2004 года
kas
71 / / 03.02.2004
ДА я не спец! только учусь! А код не мой! Я только проверил работает ли он! Да и не особо разбирался!
3
28 апреля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by kas
ДА я не спец! только учусь! А код не мой! Я только проверил работает ли он! Да и не особо разбирался!



Ну может подправив эти ошибки, все остальное всплывет на поверхность?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог