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

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

Delphi: Чтения бит с CD диска


Artin ©   (2004-10-08 20:49:00) 

Здравствуйте.
Мне надо прочитать с диска(CD) первый бит затем бит из серединки и последний бит.
Причём мне надо замерить время между считыванием.
Фактически замерить время реакции головки CD-ROMа. По этому (время реакции головки) я нечего не нашел. Конечно, можно это сделать примерно так
var
 File : file_f;
begin
assign(File,path_file);
reset(File,1);
// в цикл if EOF(File)
BlockRead(File,item,sizeof(item));
//Замеряем Timerом и высчитываем
//Конец цикла
end.
Но мне не нравиться, что надо явно указывать имя фиала.
Как читать биты прямо с CD?


Artin   (2004-10-14 21:29:00) [1]

tesseract
Купить книгу конечно надо, я уже прочитал одну книгу но она из раздела для чайников. А на нормальную книжку денег пока жалка(я студент, это по работе мне, очень надо а денег на книгу на работе наверно не выделят (гос учреждение :()). Если не трудно отскань и скинь мылом. mailto: atomm@mail.ru
Я, конечно, постараюсь разобраться.


Jel   (2004-10-13 15:05:00) [2]


> статьи Касперского - такжи хороши как и его антивирус -
> никакой пользы.

Неудивительно. Статьи пишет Крис Касперски, а антивирус Евгений Касперский :)


tesseract   (2004-10-13 11:05:00) [3]

Пояснение :
 в NT требуется открыть ус-во, его и открываем по полному имени- '\\.\A:', так например и COM , больше девятого открыть '\\.\COM125'
 в 9x надо обращаться к драйверу - '\\.\vwin32' тк обратились к драйверу, то на ReadFile можно забить.
  DEviceIOControl - пишем как в Asm регистры и команды и посылаем драйверу (купи себе "программирование в Delphi 7" от BHV - там есть пример чтения с дискеты)

to Sammik ^
 
Во-первых, прочитать биты с диска нельзя!!(да ивообще их нельзя прочитать нигде).

Точно биты нельзя! а байты можно!  статьи Касперского - такжи хороши как и его антивирус - никакой пользы.

Если прочитать/записать нельзя, как же винда к диску обращается???????


Artin   (2004-10-12 21:52:00) [4]

Fay ©
Большое спасибо это то что нужно!

tesseract
Моя товю не понимает :(
Обьесни тольком как надо писать для 98. Читал спарвку в дельфи сходу нечего не понятно.


SammIk   (2004-10-12 18:22:00) [5]

Во-первых, прочитать биты с диска нельзя!!(да ивообще их нельзя прочитать нигде).
Во-вторых нужно сходить на васм да посмотреть статьи Касперского.
И подождать его книги. Можно сходить на его саит и скачать пару глав из нее.


Fay   (2004-10-12 12:51:00) [6]

2 tesseract   (12.10.04 12:27) [5]
Это откуда? Не могу найти. В PSDK есть
Windows 95/98/Me: This technique does not work for opening a logical drive. Specifying a string in this form causes CreateFile to return an error.
На MSDN не нашёл и этого. Странно.


tesseract   (2004-10-12 12:27:00) [7]


hd := CreateFile('\\.\A:', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);


Только для NT+ для 9x надо открывать vxd

hd := CreateFile('\\.\vwin32', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);


Fay   (2004-10-11 21:44:00) [8]

Попробуй что-нибудь типа этого.
const
 BUF_SZ = 4096;
var
 hd, hf, nr, nw : DWORD;
 b : packed array[0..BUF_SZ - 1] of Byte;
label
 Label_Next;
begin
 hd := CreateFile('\\.\A:', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
 if hd = INVALID_HANDLE_VALUE then RaiseLastOSError;
 hf := INVALID_HANDLE_VALUE;
 try
   hf := CreateFile('c:\Floppy.txt', GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_ALWAYS, 0, 0);
   if hf = INVALID_HANDLE_VALUE then RaiseLastOSError;
   goto Label_Next;
   repeat
     WriteFile(hf, b, nr, nw, nil);
     Label_Next :
     ReadFile(hd, b, BUF_SZ, nr, nil);
   until nr = 0;
 finally
   CloseHandle(hd);
   if hf <> INVALID_HANDLE_VALUE then CloseHandle(hf);
 end;


Artin   (2004-10-11 21:22:00) [9]

Cobalt,tesseract
\Device\CdRom1
Пробовал. Пишет не могу открыть фаил.


tesseract   (2004-10-11 09:41:00) [10]

re: Cobalt
попробуй открыть файл
\Device\CdRom1

Да и посмотри описание CreateFile, REadFile, SetFilePointer и тд...

А можешь и DEVICE_IO_CONTROL


Cobalt   (2004-10-08 21:45:00) [11]

попробуй открыть файл
\Device\CdRom1


Наверх

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