Выпуск временного файла FoxPro - PullRequest
0 голосов
/ 15 июня 2011

У нас есть следующая строка кода Visual FoxPro 9

INDEX ON batchno TO temp FOR !DELETED()

У нас проблема с запуском скомпилированного приложения FoxPro, попробуйте перечислить содержимое папки, найдите временный файл,создайте временный файл (база данных с именем temp.idx), а затем перейдите к дальнейшей обработке для ссылки на временные данные.

Казалось, что это работает нормально, когда мы работали на сервере каталогов Novell с файловой системой NFS.Однако теперь, когда мы перешли на сервер MS Active Directory с файловой системой NTFS, у нас возникла проблема, заключающаяся в том, что скомпилированное приложение FoxPro больше не может записывать в файл.

Process Monitor показывает следующий выводкогда возникает ошибка:

Operation:   CreateFile
Result:   SHARING VIOLATION
Desired Access:  Generic Read/Write
Disposition:  OverwriteIf
Options:  Synchronous IO Non-Alert, Non-Directory File
Attributes:  N
ShareMode:  None
AllocationSize:  0

Мне было любопытно, если бы был альтернативный способ подойти к этой ситуации, когда нам не нужно беспокоиться о том, что приложение сохраняет файл в использовании (предположительно читается), пока оно пытаетсязаписать файл, где впоследствии происходит сбой, так как он уже используется.

Ответы [ 2 ]

0 голосов
/ 14 августа 2011

Важно, какую ОС вы используете! Если программа работает в Windows Vista, 7 или Server 2008, вы не можете создавать файлы везде, где хотите, без ограничений. Лучший способ - создать этот временный индекс в TEMP-каталоге пользователя. Там у вас всегда есть полные права на запись и удаление файлов. Если вы просто используете

INDEX ON batchno TO temp FOR !DELETED()

IDX будет создан в каталоге по умолчанию. Если этот каталог - C: \ Program Files ... UAC Windows не позволит записать его туда и перенаправить файл во временный каталог где-то в c: \ Windows. С помощью SYS (2023) вы можете получить TEMP-каталог пользователя. Итак, попробуйте это:

INDEX ON batchno TO (SYS(2023) + "\temp.idx") FOR !DELETED()
0 голосов
/ 21 июня 2011

.IDX-файл - это автономный индексный файл, содержащий один индекс, в отличие от .CDX, который является составным индексным файлом, который может содержать много.

Это проблема с разрешениями - работает ли она, когда вы запускаете ее как сетевой администратор?

В какой версии FoxPro / Visual FoxPro скомпилирован EXE-файл?

Чтоклиентская и серверная ОС?

...