Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 25.09.08 10:29. Заголовок: Архивация
aDir := Directory((spath+"*.dbf") ) Aeval( aDir, {|a| aadd( aRz, spath+a[1]) }) HB_ZIPFILE( filzip, arz,8,,,,,,.t. ) Если базы открыты монопольно архивация не выполняется. Как сделать правильно?
|
|
|
Ответов - 9
[только новые]
|
|
|
| |
Пост N: 898
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.09.08 11:22. Заголовок: Открывать в Shared ;..
Открывать в Shared ;) Или перед архивацией проверять все базы на предмет монопольного открытия и если такие базы есть то вываливать месагу , что архивация не возможна и тд и тп
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 25.09.08 11:28. Заголовок: Dima пишет: Открыва..
Dima пишет: Да с этим понятно :) Интерес в другом - архивировать не изменять. Почему так функция написана? или я ее не так использую?
|
|
|
|
| |
Пост N: 899
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.09.08 11:41. Заголовок: Вероятно причины те ..
Вероятно причины те же что и в примере ниже :) use test exclusive new copy file test.dbf to test1.dbf // не сработает close all use test shared new copy file test.dbf to test2.dbf // сработает ;) close all Можешь предложить способ как это обойти ? Если сможешь тогда по всей вероятности и сможешь решить проблему с архивацией :)
|
|
|
|
| Администратор
|
Пост N: 972
Зарегистрирован: 23.05.05
|
|
Отправлено: 25.09.08 13:50. Заголовок: см.zipplatform.cpp ..
см.zipplatform.cpp return _tsopen(lpszFileName, iMode, iShareMode, S_IREAD | S_IWRITE /*required only when O_CREAT mode*/); Зачем-то стоит S_IREAD | S_IWRITE для всех случаев. Хотя эта функция используется для открытия как самого архива, так и архивируемых файлов.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 25.09.08 19:24. Заголовок: Dima пишет: Можешь ..
Dima пишет: цитата: | Можешь предложить способ как это обойти ? |
| Так надо попросить "тых хлопцев" чтоб они эти функции переделали :)))
|
|
|
|
| |
Пост N: 901
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.09.08 19:48. Заголовок: MMK :sm54: :sm54:..
|
|
|
|
| постоянный участник
|
Пост N: 689
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.09.08 11:59. Заголовок: MMK пишет: Почему т..
MMK пишет: цитата: | Почему так функция написана? или я ее не так использую? |
| MMK пишет: цитата: | Так надо попросить "тых хлопцев" чтоб они эти функции переделали :))) |
| Те хлопцы должны переписать сначала ДОС, а потом под Windows ДОС-вский эмулятор !!! Попробуй открыть базы монопольно, а потом из-под Far'а или "Командера" любого - заархивировать эти базы RAR'ом или ZIP'ом !!! Остается только ОДИН способ: use test shared new !!!
|
|
|
|
| |
Пост N: 138
Зарегистрирован: 28.06.05
|
|
Отправлено: 29.09.08 12:54. Заголовок: а вроде есть ещё спо..
а вроде есть ещё способ. брать file-хэндл открытого DBF (вполне доступен) и использовать его вместо tsopen (разумеется, сохранив offset)
|
|
|
|
| |
Пост N: 1
Зарегистрирован: 02.10.08
|
|
Отправлено: 02.10.08 12:06. Заголовок: Здравствуйте Вам! А ..
Здравствуйте Вам! А ежели (не мудрствуя) так: if !lIsDir( spath+'ARHIV' ) if !lMkDir( spath+'ARHIV' ) MsgAlert('Не могу создать папку для архива ','Ошибка!') endif endif apath:=spath+'ARHIV\' aDir := Directory((spath+"*.dbf") ) for each i in aDir copy file (spath+i[1]) to (apath+i[1]) next for each i in aDir if !file(apath+i[1]) select(left(i[1],at('.dbf',i[1])-1)) copy to (apath+i[1]) for .t. endif next Aeval( aDir, {|a| aadd( aRz, apath+a[1]) }) HB_ZIPFILE( filzip, arz,8,,,,,,.t. ) Ну ето конечно если базы открыты Вами, если нет, - то IMHO открытие общих баз на сети кем-то в ексклюзиве, ето... не корошо... Пы.Сы. Привет, KMM...
|
|
|
|