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

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

CD и нулевая дорожка [D7, Win2k, WinXP]


Страницы:   1 2

CCCP ©   (2005-12-04 18:21:00) 

Подскажите, как считать данные с нулевой дорожки CD?


CCCP   (2005-12-07 21:58:00) [1]

Спасибо за помощь, все отлично работает!!!

А такой вопрос, что еще можно считать с помощью этого компонента с CD,
я имею в виду те данные, которые не копируются?


MTsv DN   (2005-12-07 20:04:00) [2]

Ах, да... Забыл... Переведи: "ХХ:YY:ZZ" => "ХХ:YY:Z0".


MTsv DN   (2005-12-07 20:03:00) [3]

А потом TOC_ATIP, вида "ХХ:YY:ZZ", смотришь по таблице и получаешь производителя CD.

С Уважением MTsv DN


MTsv DN   (2005-12-07 19:56:00) [4]

Значится так...
Я все делал динамически, поэтому первой строчке не удивляйся:

uses mbDrvLib, mbCDBC, mbASPI;
var
Burner: TBurner;
TOC_ATIP : string;
fTOC100: TTOCPMATIP0100;
begin
Burner := TBurner.Create(nil); // Создаю Burner
Burner.InitializeASPI(True);     // Инициализация ASPI/SPTI
if not Burner.ASPIInitialized then
 begin
  ShowMsg( 'Ошибка инициализации SPTI/ASPI...', MB_OK);
  exit;
 end;
if (Burner.Devices <> nil) and (Burner.Devices.Count > 0) then    
 for i := 1 to Burner.Devices.Count do
  begin   // Здесь заносишь найденные устройства в память, например в ComboBox
   Burner.Device := Burner.Devices[i - 1];
   cboxBurners.Insert(cboxDevices.Count, Burner.Devices[i - 1]);
  end;
if cboxBurners.Count = 0 then
 begin
  ShowMsg('CDROM отсутствуют...', MB_OK);
  exit;
 end;

Burner.Device := cboxDevices.Items[cboxDevices.CurIndex]; // Устанавливаешь необходимый

 fillchar(fTOC100, sizeof(fTOC100), 0); // Считывание ATIP информации
 if Burner.ReadTOC(4, @fTOC100, Sizeof(fTOC100), 0, True) then
  begin
   if fTOC100.StFrame < 10 then
    TOC_ATIP := intTostr(fTOC100.StMin) + ':' + intTostr(fTOC100.StSec) + ':0' + intTostr(fTOC100.StFrame)
     else TOC_ATIP := intTostr(fTOC100.StMin) + ':' + intTostr(fTOC100.StSec) + ':' + intTostr(fTOC100.StFrame);
  end;

ShowMsg(TOC_ATIP, MB_OK);


Вроде так...

С Уважением MTsv DN


CCCP   (2005-12-07 19:22:00) [5]

>MTsv DN
я нашел и установил. А не подскажите, в каком направлении теперь работать, что смотреть, какие свойства?


MTsv DN   (2005-12-07 19:13:00) [6]

Magic CD/DVD Burner была с сурсами в сети в свое время
Она и сейчас в сети есть... В Astalavista.sk поищи... Если не найдешь, пиши мне у меня есть...

С Уважением MTsv DN


CCCP   (2005-12-07 18:59:00) [7]

нашел у азиатов, сейчас посмотрю


CCCP   (2005-12-07 18:43:00) [8]

Magic CD Burner v.1.21 находится, но все ссылки на него битые :(


OldNaum   (2005-12-07 18:41:00) [9]

Magic CD/DVD Burner была с сурсами в сети в свое время. до сих пор даже где-то валялась, советую. У меня утеряна безвозвратно ) но в свое время почерпнул много интересного.


CCCP   (2005-12-07 18:32:00) [10]

>MTsv DN
это та, что www.binarymagics.com?


MTsv DN   (2005-12-07 18:11:00) [11]

Привет...

Если Delphi используете, то советую с сети поискать Magic CD Burner v.1.21 (BinaryMagic)... НЕ НА САЙТЕ, А ИМЕННО В СЕТИ... Можно найти "интересную" версию и не надо будет заморачиваться с переводом с С++...

С Уважением MTsv DN


CCCP   (2005-12-07 17:16:00) [12]

так?

type
CDROM_TOC_ATIP_DATA_BLOCK =record
 a1 : byte ;
 a2 : byte;
 a3 : byte;
 Reserved7 : UCHAR ;
 LeadInMsf : array[0..2]of UCHAR;
 Reserved8 : UCHAR;
 LeadOutMsf : array[0..2]of UCHAR;
 Reserved9 : UCHAR ;
 A1Values : array[0..2]of UCHAR;
 Reserved10 : UCHAR ;
 A2Values : array[0..2]of UCHAR;
 Reserved11 : UCHAR ;
 A3Values : array[0..2]of UCHAR;
 Reserved12 : UCHAR;
end;


CCCP   (2005-12-07 14:47:00) [13]

а как весь struct _CDROM_TOC_ATIP_DATA_BLOCK на Delphi перевести, что бы в нем работало?


umbra   (2005-12-07 14:42:00) [14]

UCHAR == byte
UCHAR A1Values[3] == array[1..3] of UCHAR == array[1..3] of byte


CCCP   (2005-12-07 14:17:00) [15]

а как это

typedef struct _CDROM_TOC_ATIP_DATA_BLOCK {
 UCHAR  CdrwReferenceSpeed : 3;
 UCHAR  Reserved3          : 1;
 UCHAR  WritePower         : 3;
 UCHAR  True1              : 1;
 UCHAR  Reserved4       : 6;
 UCHAR  UnrestrictedUse : 1;
 UCHAR  Reserved5       : 1;
 UCHAR  A3Valid   : 1;
 UCHAR  A2Valid   : 1;
 UCHAR  A1Valid   : 1;
 UCHAR  DiscSubType : 3;
 UCHAR  IsCdrw    : 1;
 UCHAR  True2     : 1;
 UCHAR  Reserved7;
 UCHAR  LeadInMsf[3];
 UCHAR  Reserved8;
 UCHAR  LeadOutMsf[3];
 UCHAR  Reserved9;
 UCHAR  A1Values[3];
 UCHAR  Reserved10;
 UCHAR  A2Values[3];
 UCHAR  Reserved11;
 UCHAR  A3Values[3];
 UCHAR  Reserved12;
} CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK;

на Delphi перевести и получить

UCHAR A1Values[3];
UCHAR A2Values[3];
UCHAR A3Values[3];


CCCP   (2005-12-06 19:15:00) [16]

Спасибо, попробую, может что получится :)


MTsv DN   (2005-12-06 18:41:00) [17]

В догонку:

www.cdgraber.narod.ru - здесь маленькая библиотека (~50 кб) в ней тоже есть функция ReadTOC... Это для C++. Думаю самый оптимальный вариант...

А здесь таблица для расшифровки ATIP:
http://www.replikator.ru/context.php?a_ID_CONTEXT=416&a_ID_MENU=10&ID_SITE=1

С Уважением MTsv DN


MTsv DN   (2005-12-06 18:32:00) [18]

Привет...

Вообще, по-хорошему, это надо делать через прямое обращение к приводу, т.е. либо через ASPI Layer, либо через SPTI... Другой вопрос, что отдельно примеров я не видел (правда и не искал :) )

Delphi
http://www.binarymagics.com- там есть платный компонент для записи дисков... Ограничения ТОЛЬКО на запись... Т.е. считывать инфу можно без ограничений (права не нарушите)...
http://sourceforge.net/projects/freeburner- бесплатный компонент, чуть "сырой", но считать думаю можно...
http://maxivamoto.narod.ru/DelphiComponents/diskinfo.htm- здесь набор компонентов для Delphi...
http://www.torry.net- здесь надо найти aspilib.

C&Delphi
"навскидку"...я просто больше в Delphi работаю...
http://www.hpcde.com- здесь набор библиотек
http://www.rocketdivision.com- и здесь набор библиотек

С Уважением MTsv DN


WondeRu   (2005-12-06 17:46:00) [19]

к сожалению, знаю не больше вашего


CCCP   (2005-12-06 17:40:00) [20]

А есть какие либо примеры :)?


Страницы:   1 2

Наверх

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