English Version - www.geocities.com/vhpcg
VHP Computing Group
ТехнологииПродукцияМатериалыСпециалистыПартнёрыЗапись в Гостевую КнигуПросмотр Гостевой Книги

23 марта, 2001
Владимир Трухин
ведущий инженер-программист
ОАО "Воткинская ГЭС"
Fax: +7 (34241) 63297
E-mail:
vlt@gesvt.permenergo.ru
vlt@votges.ru

Где же CDROM?

Проблема

В некоторых приложениях возникает необходимость считывать данные с компакт-дисков. Безусловно, каждый знает букву устройств CDROM на своём компьютере. Например, моему диску в офисном компьютере соответствует буква «Е». Однако, домашний компьютер имеет компакт-диск с буквой устройства «D», а у моего друга CDROM настроен на букву «N».

К сожалению, Visual FoxPro 3.0 и Visual FoxPro 5.0 не имеют специальных функций для определения типа дискового устройства. Тем не менее, VFP имеет функции, позволяющие сделать это косвенным путём.

Решение

Диск CDROM имеет одно свойство, отличающее его от жестких и гибких дисков. Он всегда полон. Он не имеет ни одного байта свободного пространства. Это обстоятельство намного упрощает проблему.

Компьютер, совместимый с IBM PC, может иметь до 26 дисковых устройств. Попробуем проверить дисковое пространство всех возможных устройств. Для этого воспользуемся функцией DISKSPACE().

Для начала выполним следующий код:

local lnDriveNumber, lcDriveLetter
for lnDriveNumber=1 to 26
    lcDriveLetter=chr(lnDriveNumber+64)
    ? 'Free space of drive',lcDriveLetter,'=',DISKSPACE(lcDriveLetter)

endfor

Полученный результат может быть похож на следующее:

Free space of drive A =          845824
Free space of drive B =         -1
Free space of drive C =          577667072
Free space of drive D =          0
Free space of drive E =         -1
Free space of drive F =         -1
Free space of drive G =         -1
… … …
… … …
Free space of drive X =         -1
Free space of drive Y =         -1
Free space of drive Z =         -1

Конечно, может возникнуть ситуация, когда в приводе гибкого диска находится полностью заполненный диск. Тогда мы увидим следующее:

Free space of drive A =          0 
Free space of drive B =         -1
Free space of drive C =  577667072
Free space of drive D =          0
Free space of drive E =         -1
Free space of drive F =         -1
Free space of drive G =         -1
… … …
… … …
Free space of drive X =         -1
Free space of drive Y =         -1
Free space of drive Z =         -1

Вероятность этого очень мала, но пренебрегать ею нельзя. Кроме того, существуют компьютеры с несколькими приводами CDROM.  

Я думаю, что в данном случае, нет повода для уныния. Большинство программ предназначены для обработки конкретных данных, а это значит, что если мы предложим нашей программе список устройств похожих на CDROM, она сама сможет определить устройство, содержащее нужный набор данных.

Приведём такой пример:

local lnDriveNumber, lcDriveLetter, llFile
set alternate to cdrom1.txt
set alternate on
for lnDriveNumber=1 to 26
lcDriveLetter=chr(lnDriveNumber+64)
llFile=.F.
if DISKSPACE(lcDriveLetter)=0
     llFile=file(lcDriveLetter+':\ADOBE\ACROREAD.303\Pwnt303e.exe')
endif
? 'Free space of drive',;
   lcDriveLetter,'=',;
   DISKSPACE(lcDriveLetter),iif(llFile,'OK!','')

endfor
set alternate off
set alternate to

Результат будет выглядеть примерно так:

Free space of drive A =          0 
Free space of drive B =         -1
Free space of drive C =  577667072
Free space of drive D =          0 OK! 
Free space of drive E =          0 
Free space of drive F =         -1
Free space of drive G =         -1
… … … 
… … … 
Free space of drive X =         -1
Free space of drive Y =         -1
Free space of drive Z =         -1

Текст статьи в формате MS Word (zip-файл,11KB)


Главная страница | Технологии | Продукция | Материалы | Специалисты | Партнёры
Запись в Гостевую Книгу | Просмотр Гостевой Книги

 
1