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