Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.17;
Скачать: CL | DM;

Вниз

Как прочитать CD-Text компакт-диска?   Найти похожие ветки 

 
AllDontFire   (2007-07-04 01:50) [0]

Привет Всем!

Как прочитать CD-Text компакт-диска? Данные: "Артист" и "Заголовок" - как в Nero ,например, при записи CD audio. Потом их можно увидеть в InfoTool.

Cпасибо.


 
Alldontfire   (2007-07-06 10:52) [1]


uses strutils,sysutils,math,dialogs,StdCtrls,windows,Classes,ExtCtrls;

Procedure ReadCDText(CdD:Char;var Title,Artist:String);
const
//CDROM_READ_TOC_EX_FORMAT_CDTEXT =$5;
IOCTL_CDROM_READ_TOC_EX = $24054;
type
CDROM_TOC_CD_TEXT_DATA_BLOCK = record
PackType:UCHAR  ;
TrackNumber:UChar  ;
//UCHAR  TrackNumber:7;
//UCHAR  ExtensionFlag:1;
SequenceNumber:UCHAR  ;
//UCHAR  CharacterPosition:4;
//UCHAR  BlockNumber:3;
Position:Uchar;
//UCHAR  Unicode:1;
//union {    UCHAR  Text[12];    WCHAR  WText[6];  };
Text:Array[1..12] of CHAR;
CRC:Array[1..2]of UCHAR  ;
end;
CDROM_READ_TOC_EX = record
 par1: byte;
 //Format : UCHAR:4 ;
 // Reserved1 : UCHAR:3;
 // Msf : UCHAR:1 ;
 SessionTrack:UCHAR;
 Reserved2:UCHAR ;
 Reserved3:UCHAR;
end;
CDROM_TOC_CD_TEXT_DATA= record
Length:Array[1..2] of UCHAR ;
Reserved1:UCHAR ;
Reserved2:UCHAR ;
Descriptors:array [0..4]of CDROM_TOC_CD_TEXT_DATA_BLOCK ;
end;
var
hCDDevice : THandle;
d:Bool;
in_data: CDROM_READ_TOC_EX;
out_size:DWORD ;
out_data: CDROM_TOC_CD_TEXT_DATA ;
BEGIN
 FillChar( in_data,SizeOf(in_data),0);
 FillChar( out_data,SizeOf(out_data),0);
 in_data.par1:=$85;
 //in_data.Format  := CDROM_READ_TOC_EX_FORMAT_CDTEXT ;
 //in_data.Reserved1 := 0;
 //in_data.Msf    :=1;
 in_data.SessionTrack :=  0;
 hCDDevice := CreateFile(PChar("\\.\"+cdd+":"),
 GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 );
 if hCDDevice <> INVALID_HANDLE_VALUE then
 begin
     d:=DeviceIoControl(hCDDevice,IOCTL_CDROM_READ_TOC_EX,@in_data,
     sizeof(in_data),@out_data,sizeof(out_data),out_size,nil );
     if  d  = True then begin
       Title:=out_data.Descriptors[0].Text;
       Artist:=out_data.Descriptors[4].Text;
     end
     else showmessage(" Ошибка:"+SysErrorMessage(GetLastError));
     CloseHandle(hCDDevice);
 end
 else showmessage("Error in Create file "+SysErrorMessage(GetLastError));
end;


http://www.codeproject.com/useritems/SimpleAudioCD.asp?df=100&forumid=344360&select=1706263#xx1706263xx



Страницы: 1 вся ветка

Текущий архив: 2008.02.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
6-1178645354
flaxe
2007-05-08 21:29
2008.02.17
Съэмулировать клиент


9-1165706828
школьник :-)
2006-12-10 02:27
2008.02.17
bejeweled


15-1200674989
Черный Шаман
2008-01-18 19:49
2008.02.17
Китайцы объявляют территорию России своей землей


15-1200375005
vajo
2008-01-15 08:30
2008.02.17
Нужна флэшка с функцией защищенной области


15-1200502181
rts111
2008-01-16 19:49
2008.02.17
Подскажите, где найти описание формата *.doc?