maripossa |
Отправлено: 14.02.2007, 22:07 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
У меня есть два компа, соединенные между собой через сетевые карты (локальная сеть). Копирую (из своей программы) с локального диска 1-го компа (D:\) на сетевой (F:\ — который, соответственно является расшаренной папкой на 2-м компе). Как проверить доступность диска F:\, например если выдернуть шнур из сетевой карты, или на 2-м компе закрыли доступ к папке. Мне это нужно чтобы в данном случае прекратилось копирование и приложение заклылось. Процедура DirectoryExists в данном случае не работает. |
|
AVC |
Отправлено: 15.02.2007, 10:17 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Анализировать код ошибки.
Чем копируется?
PS. При выдергивани шнура или другом прекращении доступа копирование прекратится не зависимо от ваших действий. |
|
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]); |
Она выдаёт список доступных логических дисков.
|
|