|
Копирование файла
|
|||
---|---|---|---|
#18+
Всем привет! Вопрос такой. Периодически в программе приходится с сервера копировать файл на локальный компьютер. Этот файл открыт несколькими пользователями. Самый простой вариант - select ... copy to c:\1.dbf. Но файл достаточно большой и это занимает некоторое время. Команда copy file &f1 to &f2 работает быстрее, но если исходный файл открыт, то выдается сообщение, что команду нельзя выполнить. Есть ли вариант решения задачи? (я имею ввиду ускорение перекачки) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 12:59 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Если файл достаточно большой, то зачем его копировать с сервера на локальную машину? Не лучше ли дать пользователям просматривать часть файла прямо с сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 13:06 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Владимир САЕсли файл достаточно большой, то зачем его копировать с сервера на локальную машину? Не лучше ли дать пользователям просматривать часть файла прямо с сервера? Да, в общем-то, так и происходит, но просто иногда требуется эта операция. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 13:08 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Кстати, еще один вопрос. При входе в программу выполняется процедура открытия файлов. Причем в этой процедуре происходит и копирование этого файла (перед его открытием на моем компьютере). Более того, он уже открыт другими пользователями, но все проходит нормально. А если после загрузки программы я пытаюсь опять его скопировать - select ... use copy file &p1 to &p2 use &p1 выдается та же ошибка при копировании! Вот этого я никак понять не могу. Ведь ситуации одинаковые - и там и там файл открыт другими пользователями, и там и там он или еще не открыт или уже закрыт! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 13:34 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
StandD...При входе в программу выполняется процедура открытия файлов. Причем в этой процедуре происходит и копирование этого файла (перед его открытием на моем компьютере).... Вот этого я никак понять не могу. Ведь ситуации одинаковые - и там и там файл открыт другими пользователями, и там и там он или еще не открыт или уже закрыт!Если файл открыт пользователями Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 13:42 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Владимир СА StandD...При входе в программу выполняется процедура открытия файлов. Причем в этой процедуре происходит и копирование этого файла (перед его открытием на моем компьютере).... Вот этого я никак понять не могу. Ведь ситуации одинаковые - и там и там файл открыт другими пользователями, и там и там он или еще не открыт или уже закрыт!Если файл открыт пользователями Код: plaintext
Код: plaintext
В том-то и дело, что все SHARED!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 13:46 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
StandDDВ том-то и дело, что все SHARED!!!!Стоп. Ты принял информацию с сервера в виде Код: plaintext
Код: plaintext
Код: plaintext
Но мы его можем скопировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 13:56 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
[quot Владимир СА Стоп. Ты принял информацию с сервера в виде Код: plaintext
Код: plaintext
Код: plaintext
Но мы его можем скопировать.[/quot] Но мне нужно копировать не <PATH_file> IN 0 SHARED, а файл, который открыт в SELECT .... ! Как раз COPY TO <PATH_file> и не работает! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 14:05 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
StandD[quot Владимир СА Стоп. Ты принял информацию с сервера в виде Код: plaintext
Код: plaintext
Код: plaintext
Но мы его можем скопировать. Но мне нужно копировать не <PATH_file> IN 0 SHARED, а файл, который открыт в SELECT .... ! Как раз COPY TO <PATH_file> и не работает![/quot]Что-то я тебя не пойму. Только что произвел у себя Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 14:19 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
А вот как у меня. Где здесь засада? В select 21 - файл, расшаренный на сервере то, что работало SELECT 20 USE SELECT 21 COPY TO c:\kartc.dbf select 20 use c:\kartc.dbf Новый вариант: SELECT 21 use pp1=put+"kart.dbf" pp2="c:\kartc.dbf" COPY FILE &pp1 TO &pp2 - вот здесь ошибка USE &pp1 select 20 use &pp2 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:11 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
1. Код ошибки нужно смотреть. 2. Правильна ли получена переменная pp1 Пошагово выполнить данный блок. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:23 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Кода ошибки нет. Сообщение - "ФАЙЛ В НАСТОЯЩЕЕ ВРЕМЯ ИСПОЛЬЗУЕТСЯ"... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:25 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Кажется, нащупал... Может, чего и подскажете. Вариант первый. Если я закрываю форму с гридом, в котором сидит локальный файл, то, при запуске из главного меню процедуры копирования do kartc, все в порядке. Если же я нажимаю в этой форме на рисунок, в клике которого прописано: _screen.ActiveForm.release() do kartc вылетает ошибка. Что же это такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:41 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
StandDКажется, нащупал... Может, чего и подскажете. Вариант первый. Если я закрываю форму с гридом, в котором сидит локальный файл, то, при запуске из главного меню процедуры копирования do kartc, все в порядке. Если же я нажимаю в этой форме на рисунок, в клике которого прописано: _screen.ActiveForm.release() do kartc вылетает ошибка. Что же это такое?Дак форма еще не уничтожилась и ее компоненты тоже. А файл kart.dbf у тебя в форме используется EXCLUSIVE наверное. Тогда как ты можешь использовать COPY FILE ... ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:45 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Причем это сообщение возникает на форме с "белым" пустым гридом. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:46 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Да же еще не так. Файл kart.dbf еще не отключен от GRID-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:47 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Владимир СА Дак форма еще не уничтожилась и ее компоненты тоже. А файл kart.dbf у тебя в форме используется EXCLUSIVE наверное. Тогда как ты можешь использовать COPY FILE ... ??? Не-не-не! В гриде сидит локальный файл, расположенный на моем компьютере и открыт не EXCL. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:49 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Но зерно в этом есть! Видимо файл (kartc) в гриде действительно не успевает вырубится, и программа ругается не на расшаренный серверный файл, а на локальный. Так как же его успеть вырубить и почему _screen.ActveForm.release его не закрывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:51 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Если использовать твою технологию (что я лично не приветствую), то надо было создать программу в которой сначала вызывалась форма, затем выгружалась, а потом только шло копирование. Типа Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 15:52 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Все равно не понятно :-( . Вариант 1. select 21 (серверный расшаренный файл &pp1) copy to c:\kartc.dbf Работает. Вариант 2. SELECT 21 use pp2="c:\kartc.dbf" COPY FILE &pp1 TO &pp2 Не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2006, 16:05 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Значит так. Хочу принести извинения по поводу неправильной информации: Если файл открыт пользователями Код: plaintext
то копировать его можно, а вот если Код: plaintext
то нельзя. Файл нельзя копировать командой: Код: plaintext
Я накололся из-за того, что открыл файл с опцией SHARED, зашел в TotalCommander и скопировал его. Действительно он копируется. НО! Он копируется средствами Windows, а не FOX. Таким образом можно сказать, что файл копируется даже если он открыт с опцией SHARED, но через функции WINAPI. Если ты с ними дружишь, то вперед. А средствами FOX увы нет. Т.е. либо оставляешь команду Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2006, 08:08 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
2 ВладимирСА Большое спасибо за уделенное время. Надеюсь, кто-то еще почерпнул что-то новое для себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2006, 10:27 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Только в этом коде ошибка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2011, 12:38 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
Какая ошибка? на какой строке? Если у тебя не 9-й фокс то ругается на BINTOC(0, '4RS') ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2011, 13:42 |
|
Копирование файла
|
|||
---|---|---|---|
#18+
tcFrom = tcFrom + CHR(0) + CHR(0) && Дописываем нули lnLenFrom = LEN(tcFrom) && Длина исходной строки hGlobalFrom = GlobalAlloc(0x0040, lnLenFrom) && Выделяем для неё блок памяти SYS(2600, hGlobalFrom, lnLenFrom, tcFrom) && и копируем туда строку lcSHFO = lcSHFO + BINTOC(hGlobalFrom, '4RS') && Поле pFrom * Обработка спецификайии результирующих файлов IF tnOper = 3 lcSHFO = lcSHFO + BINTOC(0, '4RS') && для операции удаления ELSE tcTo = tcTo + CHR(0) + CHR(0) && Дописываем нули lnLenTo = LEN(tcTo) && Длина результирующей строки hGlobalTo = GlobalAlloc(0x0040, lnLenTo) && Выделяем для неё блок памяти SYS(2600, hGlobalFrom, lnLenFrom, tcFrom) && и копируем туда строку lcSHFO = lcSHFO + BINTOC(hGlobalTo, '4RS') && Поле pTo ENDIF 4 и 12 строки абсолютно идентичные, а в 12 строке должен указываться путь куда копировать. Просто описка скорее всего ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2011, 10:14 |
|
|
start [/forum/topic.php?fid=41&fpage=11&tid=1581826]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 133ms |
0 / 0 |