Помощь - Поиск - Пользователи - Календарь
Полная версия: как определить что нет сетевого диска
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DeeMon
Есть программа нижнего уровня на Турбо Паскале(ТП) которая обменивается файлами с другой программой верхнего уровня (на Fox) по средствам сети. Так вот, та программа, которая написана на ТП находится на компе под DOS и сеть на нем соответственно под DOS и подключен сетевой диск на который эта программа пишет те самые файлы для обмена. Проблема заключется в следующем:
когда верхний уровень отваливается (перезагружается, выключается и тд) нижний уровень должен работать как ни в чем не бывало, с той лишь разницей, что он не должен ни какие файлы никуда не передавать, как определить что нет сетевого диска без всяких задержек, (дело в том, что я пробовал определять это с помощью DiskSize(5) но в этом случае похоже, что он ждет какие-то там тайм ауты(чисто мое предположение) и программа в этом месте жутко тормозит, что недопустимо в моем случае)

за любую помощь заранее благодарен
Ozzя
http://forum.sources.ru/index.php?showtopi...nread=1&hl=диск
Сообщение № 10
Altair
Ну есть пожалуй еще проще способ:
1.
Для определения доступности сетевого диска, попробуйте использовать переменную IoResult, то есть выполняем любую операцию с файлом на этом диске, например Reset(f), если диска нет, то в переменную IoResult будет помещен код ошибки, при этом операция выполнится очень(1) быстро.
2.
Есть второй способ, не задумываясь пишите файлы на диск, и если происходит критическая ( RUN-TIME ERROR) ошибк, выполняйте нужные дейсвтия.
Но в этом случае, как Вы сами понимаете, необходимо обрабатывать критические ошибки.
Если заинтерисуетесь этим методом, могу выложить модуль (из книги Фаронова) "обработка критическихз ошибок"
DeeMon
Цитата(Oleg_Z @ 22.09.04 18:39)
Ну есть пожалуй еще проще способ:
1.
Для определения доступности сетевого диска, попробуйте использовать переменную IoResult, то есть выполняем любую операцию с файлом на этом диске, например Reset(f), если диска нет, то в переменную IoResult будет помещен код ошибки, при этом операция выполнится очень(1) быстро.
2.
Есть второй способ, не задумываясь пишите файлы на диск, и если происходит критическая ( RUN-TIME ERROR) ошибк, выполняйте нужные дейсвтия.
Но в этом случае, как Вы сами понимаете, необходимо обрабатывать критические ошибки.
Если заинтерисуетесь этим методом, могу выложить модуль (из книги Фаронова)  "обработка критическихз ошибок"

пробовал .... так же долго как и DiskSize
Altair
Долго????

Так, товарищ, вы время тогда называйте требуемое!

А то долго - не долго .... это игра словами!
DeeMon
Oleg_Z
долго это где-то около минуты
Altair
Эге ... да ... минута это серьезно ...
А оно и понятно, ведь сеть еще определить надо, а затем еще и диск на том конце...

Тогда тут ни как не обойтись представлением о сетевом диске как о физическом!

А может "верхняя" система посылать сообщение "нижней" что бы та остановилась?
Или "верхняя" система пожет непроизвольно перегружаться, выключатся?
То есть один из способов такой:
При попытке перегрузить верхнюю систему, она сначала подает сигнал нижней, что отключается, а на нижней стоит резидент (или сама прога это определяет), регистрирующий отключение.
Еще вопрос: а система верхняя, сильно удалена от нижней? (физическое расстояние в метрах от одной машины до другой)
DeeMon
слушайте, народ тут мне в голову пришла одна мысль (можно ведь создать рамдиск на нижнем уровне и его расшарить, тогда этот диск точно уж не будет отваливаться и файлы я могу туда писать сколько угодно, и тормозить ни чего не должно), но для этого нужен lantastic или еще какой-нить сервер по ДОС не подскажите где можно его взять
Altair
Цитата
рамдиск

Так, стоп!
Тогда такое предложение системы:

На нижнем уровне есть электронный диск в оперативной памяти.
Программа посылающая файлы, шлет их ВСЕГДА на эл. диск.
Резидент проверяет есть ли диск сетевой (1 минуту, т.к. это не важно) , и если есть отсылает их на сеть и удаляет с эл.диска.

для эл.диска необходимо прописать нужные строки в AUTOEXEC.BAT и CONFIG.SYS!!!
DeeMon
Да нет же, сетевой диск мне совсем не нужен будет, ведь я расшарю рамдиск для доступа к нему по сети и подключу его на верхнем уровне (в Винде) как сетевой
Altair
Ага, все понял.
Ну тогда выходит осталось найти сервер под ДОС!

[offtop]
Аватар это фотка???
Хех, здорово. Но здесь я "маршал задач" :D
[/offtop]
DeeMon
да не маршал я, всего лишь рядовой, а фотка армейская ;)

хех, круто! ИМХО только у нас в России есть военные программисты, и программисты бывшие военные!
united pharmacy lasix no precrcr
Buy Generic Zithromax
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.