Форум » [x]Harbour » Чтение файлов из сетевой папки .... » Ответить

Чтение файлов из сетевой папки ....

Andrey: Считываю из сетевой папки файлы. Файлы могут быть, а могут и не быть. А доступ к папке регулирует админ - чтение: разрещено/запрещено. Как у себя в программе определить, что юзеру запрещено чтение файлов ?

Ответов - 21, стр: 1 2 All

PSP: Чем читаешь?

Andrey: [pre2] cPath := "\\Server\Documents" aFiles := DIRECTORY( cPath + "*.*" )[/pre2]

PSP: FOPEN( <cFile>, [<nMode>] ) --> nHandle Если nHandle == -1, значит открытие не состоялось. Подробности ошибки сообщит FError()


Dima: Andrey пишет: Как у себя в программе определить, что юзеру запрещено чтение файлов ? Там еще и сканирование (список содержимого папки) может быть запрещено

PSP: Тогда у него не будет пути к файлу вообще. До FOpen не дойдёт.

Andrey: PSP пишет: FOPEN( <cFile>, [<nMode>] ) --> nHandle Нельзя этого сделать. Какой файл открывать ? Не знает программа что открывать. Там любой файл может быть, а может и не быть... Нужно получить список файлов из папки или получить ошибку открытия папки....

AndreyZh: Проверить существования и права папки: скопируйте свой маленький файл туда и анализ успешности, если да то удалите/измените его - анализ успешности, это права на папку

PSP: Andrey пишет: Нужно получить список файлов из папки или получить ошибку открытия папки.... Andrey пишет: aFiles := DIRECTORY( cPath + "*.*" ) aFiles будет пустой, если к папке нет доступа.

SergKis: Andrey Исп. функции hb_vf...() http://www.kresin.ru/hrbfaq_3.html#Doc12 раздел 3.12. API ...

Andrey: AndreyZh пишет: Проверить существования и права папки: скопируйте свой маленький файл туда и анализ успешности, если да то удалите/измените его - анализ успешности, это права на папку PSP пишет: aFiles будет пустой, если к папке нет доступа. Andrey пишет: Считываю из сетевой папки файлы. Файлы могут быть, а могут и не быть. А доступ к папке регулирует админ - чтение: разрещено/запрещено. Как у себя в программе определить, что юзеру запрещено чтение файлов ?

SergKis: Andrey Что не ясно ? Вроде древний метод работы 1. просишь файлы директории по маске 2. если получил, то доступ к дир. есть 3. по списку или выборочно, пытаешься открыть файл или копировать к себе. 4. если неудачно, то файл или занят или недоступен, можешь анализировать nResult или запрос ф-ии ERROR(), забыл как точно называется, ее результат код ошибки Для проверки на запись, пытаешься создать в дир. файл, если удачно - писать можно.

Andrey: Да дело в том что у юзер может быть ТОЛЬКО чтение файлов и в папке может НЕ БЫТЬ файлов (забыли туда положить). А как тогда определить - есть у юзера право на чтения этой папки ? Когда файлы в папке есть, то понятно как действовать.

SergKis: Andrey пишет забыли туда положить Это тогда к телепатам, они точно знают. По факту нет файла - не положили. Тот кто должен пусть выкладывает, может и протокол к файлу кладет (как бы 2а файла)

Andrey: SergKis пишет: Это тогда к телепатам, они точно знают.

PSP: Andrey пишет: А как тогда определить - есть у юзера право на чтения этой папки ? FERROR() Return Values Error Meaning -------------- ---------------------------------------------- 0 Successful 2 File not found 3 Path not found 4 Too many files open 5 Access denied 6 Invalid handle 8 Insufficient memory 15 Invalid drive specified 19 Attempted to write to a write-protected disk 21 Drive not ready 23 Data CRC error 29 Write fault 30 Read fault 32 Sharing violation 33 Lock Violation

rvu: Просматриваю папки, ищу в них файлы. Использую функцию DIRECTORY("*.*","D") . Если у папки стоит атрибут Архивная, она ее не видит. Что делать? Файлы с таким атрибутом видит. "DA" писал, не помогает.

Pasha: Может быть дело не в архивном атрибуте, а в другом ? Попробуйте DIRECTORY("*.*","DHS")

rvu: Pasha пишет: Попробуйте DIRECTORY("*.*","DHS") Нет, не помогает. А вот если предварительно снимаю с каталогов архивные атрибуты attrib.exe -A каталог\*.* /D /S то потом все работает.

Pasha: Странно. Создаю папку. Кидаю туда программу, создаю в ней еще папку ff, выдаю: attrib +a ff Убеждаюсь, что атрибут на ff установлен Запускаю программу, которая отрабатывает DIRECTORY("*.*","DHS") Результат: 4 элемента: 3 папки: "." ".". "ff", и сама программа Может там дело в файловой системе ? Я запускаю локально на ntfs

rvu: Pasha пишет: Я запускаю локально на ntfs Я тоже. У меня в папке еще папки, в них еще. И у всех атрибуты архив. Не работает, пока атрибут не сниму. Если интересно, могу выложить.

alkresin: У меня тоже аттрибут "архив" не вызывает проблем. Открываю с помощью hbedit, там используется Directory( cPath, "HSD" ). Скачайте hbedit и попробуйте открыть каталог с его помощью - Ctrl-F4, Ctrl-Down - тогда будет яснее, где искать проблему, в Windows или сборке Harbour.



полная версия страницы