OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 23 Октябрь, 2017 16:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 11 Сентябрь, 2009 11:29 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4404
Откуда: Россия, Орёл
См. также: viewtopic.php?f=16&t=280

Построение списка файлов для относительного пути A (как реализовано в HostFiles):
- строится список файлов из А относительно вторичного каталога (X)
- этот список дополняется файлами из А относительно первичного каталога (Y), если X не найден или список файлов X получен без ошибок.
- общий результат поиска приравнивается к результатам поиска в Y.

По идее, можно иметь не пустой список файлов и loc.res # 0, говорящий, что этот список, возможно, не полон. Тогда надо:
1) искать файлы в Y не зависимо от результатов поиска в X
2) более корректно выставлять общий результат: если только один из каталогов не существует, то результат выставляется по поиску в существующем. Как выставляется результат, если в обоих каталогах при поиске возникли ошибки (но что-то нашлось), уже не так важно, наверное.

Касательно выделенных граблей --- наступаю второй раз. Первый был давно и решился закомментированием ASSERT(loc.res = 0, 100). Второй, сейчас, был без ASSERT --- выдавал сообщение об ошибке. Полдня убил, чтобы понять: почему при полном пути все ок, а при относительном "location or file not found":
Код:
opath = "w:\work\1"
npath = "w:\work\2"
type = "odc"
res = 0
HostLocator's opath = w:\work\1
HostLocator's npath = w:\work\2

opath = "1"
npath = "2"
type = "odc"
Список файлов 1 не получен: location or file not found
Список файлов 2 не получен: location or file not found
res = -1
HostLocator's opath = W:\work\1
HostLocator's npath = W:\work\2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: HostFiles.FileList и серверный ББ
СообщениеДобавлено: Пятница, 11 Сентябрь, 2009 11:55 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4404
Откуда: Россия, Орёл
По выделенному, например, такое исправление:
Код:
   PROCEDURE (d: Directory) FileList* (loc: Files.Locator): Files.FileInfo;
      VAR ...
-->         firstRes: INTEGER;
   BEGIN
      ASSERT(loc # NIL, 20);
      first := NIL; last :=NIL;
      WITH loc: Locator DO
         Append(loc.path, wildcard, wildcard, loc.maxLen, s);
         find := WinApi.FindFirstFileW(s, fd);
         IF find # invalid THEN
...
         ELSE res := WinApi.GetLastError()
         END;
         IF res = noMoreFilesErr THEN res := ok END;
-->         firstRes := res;
         (* check startup directory *)
         IF (loc.rootLen > 0) & ((res = ok) OR (res = fileNotFoundErr) OR (res = pathNotFoundErr)) THEN
            GetShadowDir(loc, s);
...
         END;
-->         IF (res = fileNotFoundErr) OR (res = pathNotFoundErr) THEN res := firstRes END;
         loc.res := Error(res)
      ELSE loc.res := invalidName
      END;
      RETURN first
   END FileList;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: HostFiles.FileList и серверный ББ
СообщениеДобавлено: Понедельник, 14 Сентябрь, 2009 04:28 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Так это, в 1.6 Comm разве такого исправления не лежит? По крайней мере я это исправление года два назад делал


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: HostFiles.FileList и серверный ББ
СообщениеДобавлено: Понедельник, 14 Сентябрь, 2009 09:37 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4404
Откуда: Россия, Орёл
И правда --- есть :)
Код:
   PROCEDURE MaskFileList (loc : Files.Locator; IN mask : ARRAY OF CHAR) : Files.FileInfo;
...         res1 : INTEGER; (* 28.09.2006   ING *)
...         res1 := res; (* 28.09.2006   ING *)
...         IF res1 = ok THEN res := ok END; (* 28.09.2006   ING *)
   END MaskFileList;


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB