C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как проверить доступен ли сетевой диск?
maripossa
Отправлено: 14.02.2007, 22:07


Ученик-кочегар

Группа: Участник
Сообщений: 8



У меня есть два компа, соединенные между собой через сетевые карты (локальная сеть). Копирую (из своей программы) с локального диска 1-го компа (D:\) на сетевой (F:\ — который, соответственно является расшаренной папкой на 2-м компе). Как проверить доступность диска F:\, например если выдернуть шнур из сетевой карты, или на 2-м компе закрыли доступ к папке. Мне это нужно чтобы в данном случае прекратилось копирование и приложение заклылось. Процедура DirectoryExists в данном случае не работает.
AVC
Отправлено: 15.02.2007, 10:17


Ветеран

Группа: Модератор
Сообщений: 1583



Анализировать код ошибки.
Чем копируется?

PS. При выдергивани шнура или другом прекращении доступа копирование прекратится не зависимо от ваших действий. biggrin.gif
maripossa
Отправлено: 15.02.2007, 21:53


Ученик-кочегар

Группа: Участник
Сообщений: 8



Немного не точно я выразил свой вопрос. Файлы не копируются, а переносятся функцией int MoveFileA(*ExistingFileName,*NewFileName) и все это происходит в таймере по-мере поступления файлов на 1-й комп. И как в данном случае пользоваться возвращаемым значением или кодом ошибки? Да, я заметил, что при потере связи ничего не происходит, файлы не переносятся, но как это отследить? Как мне узнать что доступа нет?

Отредактировано maripossa — 15.02.2007, 22:29
AVC
Отправлено: 16.02.2007, 10:16


Ветеран

Группа: Модератор
Сообщений: 1583



SDK говорит
QUOTE

MoveFile
Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Termi_uc
Отправлено: 16.02.2007, 20:46


Дежурный стрелочник

Группа: Участник
Сообщений: 61



QUOTE (maripossa @ 14.02.2007, 22:07)
Копирую (из своей программы) с локального диска 1-го компа (D:\)  на сетевой (F:\)

Если тебе надо всего-то узнать доступен F или нет, воспользуйся след. простой функцией:
CODE
DWORD mask;
char * letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

mask = GetLogicalDrives();

for(int i(1), j(0); j < 27; i *= 2, j++)
 if(mask & i)
  Memo1->Lines->Add(letter[j]);

Она выдаёт список доступных логических дисков.

Вернуться в Вопросы программирования в C++Builder