Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ как определить что нет сетевого диска

Автор: DeeMon 22.09.2004 18:29

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

за любую помощь заранее благодарен

Автор: Ozzя 22.09.2004 19:49

http://forum.sources.ru/index.php?showtopic=47548&unread=1&hl=диск
Сообщение № 10

Автор: Altair 22.09.2004 22:39

Ну есть пожалуй еще проще способ:
1.
Для определения доступности сетевого диска, попробуйте использовать переменную IoResult, то есть выполняем любую операцию с файлом на этом диске, например Reset(f), если диска нет, то в переменную IoResult будет помещен код ошибки, при этом операция выполнится очень(1) быстро.
2.
Есть второй способ, не задумываясь пишите файлы на диск, и если происходит критическая ( RUN-TIME ERROR) ошибк, выполняйте нужные дейсвтия.
Но в этом случае, как Вы сами понимаете, необходимо обрабатывать критические ошибки.
Если заинтерисуетесь этим методом, могу выложить модуль (из книги Фаронова) "обработка критическихз ошибок"

Автор: DeeMon 23.09.2004 13:15

Цитата(Oleg_Z @ 22.09.04 18:39)
Ну есть пожалуй еще проще способ:
1.
Для определения доступности сетевого диска, попробуйте использовать переменную IoResult, то есть выполняем любую операцию с файлом на этом диске, например Reset(f), если диска нет, то в переменную IoResult будет помещен код ошибки, при этом операция выполнится очень(1) быстро.
2.
Есть второй способ, не задумываясь пишите файлы на диск, и если происходит критическая ( RUN-TIME ERROR) ошибк, выполняйте нужные дейсвтия.
Но в этом случае, как Вы сами понимаете, необходимо обрабатывать критические ошибки.
Если заинтерисуетесь этим методом, могу выложить модуль (из книги Фаронова)  "обработка критическихз ошибок"

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

Автор: Altair 23.09.2004 13:19

Долго????

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

А то долго - не долго .... это игра словами!

Автор: DeeMon 23.09.2004 13:28

Oleg_Z
долго это где-то около минуты

Автор: Altair 23.09.2004 13:38

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

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

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

Автор: DeeMon 23.09.2004 13:39

слушайте, народ тут мне в голову пришла одна мысль (можно ведь создать рамдиск на нижнем уровне и его расшарить, тогда этот диск точно уж не будет отваливаться и файлы я могу туда писать сколько угодно, и тормозить ни чего не должно), но для этого нужен lantastic или еще какой-нить сервер по ДОС не подскажите где можно его взять

Автор: Altair 23.09.2004 13:43

Цитата
рамдиск

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

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

для эл.диска необходимо прописать нужные строки в AUTOEXEC.BAT и CONFIG.SYS!!!

Автор: DeeMon 23.09.2004 13:48

Да нет же, сетевой диск мне совсем не нужен будет, ведь я расшарю рамдиск для доступа к нему по сети и подключу его на верхнем уровне (в Винде) как сетевой

Автор: Altair 23.09.2004 14:01

Ага, все понял.
Ну тогда выходит осталось найти сервер под ДОС!

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

Автор: DeeMon 23.09.2004 14:41

да не маршал я, всего лишь рядовой, а фотка армейская ;)

хех, круто! ИМХО только у нас в России есть военные программисты, и программисты бывшие военные!

Автор: united pharmacy lasix no precrcr 5.11.2021 17:16

Buy Generic Zithromax