Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Трабла с CopyFile


Автор: Palladin 10.6.2009, 01:13
Почему-то не работает copyfile
пишу так:
Код

copyfile(PChar('TableBD.mdb'),PChar(dir+'\TableDB.mdb'),false);


Есть подозрения, видать не получается скопировать, т.к. это БД программы, и она в данный момент используется, но ошибку не бьет просто не копирует, отсюда вопрос как скопировать файл который в данный момент используется...

Автор: Данкинг 10.6.2009, 01:21
Цитата(Palladin @  10.6.2009,  02:13 Найти цитируемый пост)
Есть подозрения, видать не получается скопировать, т.к. это БД программы, и она в данный момент используется,

Подозрения неверные: только что сейчас проверил именно на .mdb - всё отлично работает. Смотри, что у тебя в переменной dir: небось там путь несуществующий.

Автор: Palladin 10.6.2009, 01:25
Проверяю, пишу:
Код

copyfile(PChar('TableBD.mdb'),PChar('TableDB123.mdb'),false);

т.е. пытаюсь просто скопировать в туже папку где и БД и лишь меняю имя, эффекта 0:(

Добавлено @ 01:27
пишу тоже самое, но уже с ata.txt все работает
Код

copyfile(PChar('ata.txt'),PChar('ata1.txt'),false);

Автор: kami 10.6.2009, 01:31
Есть мнение, что в GetCurrentDir - не тот путь, по которому лежит эта база.
Итого - не находится не Dest, a Source
Почти уверен, что это верное мнение smile

Добавлено через 53 секунды
Выход - либо воспользоваться SetCurrentDir, либо явно прописывать полный путь к базе, которую нужно скопировать.

Автор: Palladin 10.6.2009, 01:34
Пишу так:
Код

copyfile(PChar('G:\Documents and Settings\HeGrenade\Рабочий стол\НЕ УДАЛЯТЬ\l\v.0.9a\TableBD.mdb'),PChar('G:\Documents and Settings\HeGrenade\Рабочий стол\НЕ УДАЛЯТЬ\l\v.0.9a\Выгрузка\ata.mdb'),false);

никакого эффекта

Добавлено через 57 секунд
2Kami есть предложения?

Добавлено через 9 минут и 42 секунды
Я выше попробовал полный путь, не помогло

Автор: kami 10.6.2009, 02:00
Цитата(Palladin @  10.6.2009,  01:34 Найти цитируемый пост)
2Kami есть предложения?

Да.
Только с них надо было начать - посмотреть, что выдает GetLastError

Автор: Palladin 10.6.2009, 17:25
Ну дак всетаки, что делать?

Автор: kami 10.6.2009, 18:28
Цитата(Palladin @  10.6.2009,  17:25 Найти цитируемый пост)
Ну дак всетаки, что делать?

Цитата(kami @  10.6.2009,  02:00 Найти цитируемый пост)
 посмотреть, что выдает GetLastError


Автор: Palladin 10.6.2009, 19:09
из моего последнего поста, вроде как становится ясно, что я невкурсе даже что это такое...

Автор: kami 10.6.2009, 20:01
Понятно.
После CopyFile поставь строчку
Код

MessageBox(0, @IntToStr(GetLastError)[1], 'Ошибка при копировании', MB_OK);

Потом скажи здесь результат.
Можешь и сам посмотреть, что означает ошибка: http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx

Автор: Akella 10.6.2009, 21:01
Цитата(kami @ 10.6.2009,  20:01)
Понятно.
После CopyFile поставь строчку
Код

MessageBox(0, @IntToStr(GetLastError)[1], 'Ошибка при копировании', MB_OK);

Потом скажи здесь результат.
Можешь и сам посмотреть, что означает ошибка: http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx

а так лучше  smile 
http://forum.vingrad.ru/index.php?showtopic=237714&view=findpost&p=1733249

Добавлено через 1 минуту и 15 секунд
Palladin, копировать занятый другой программой файл можно с помощью потока TFileStream.

Автор: Palladin 10.6.2009, 21:30
ошибка№ 2
Глянул по ссылке это
Код

ERROR_FILE_NOT_FOUND2 (0x2)             The system cannot find the file specified.


Однако я еще раз говорю путь указон верно, я проверял на других файлах в этой же папке, не копирует только TableBD.mdb

Добавлено через 2 минуты и 32 секунды
П###=)))))) нашел ошибку, моя вина, написал автоматом TableBD и в коде и тут, а база называется TabelDB, бывший программер видать ошибся
Всем спс, ужас...

Автор: kami 10.6.2009, 21:49
Цитата(Akella @  10.6.2009,  21:01 Найти цитируемый пост)
Palladin, копировать занятый другой программой файл можно с помощью потока TFileStream.

Как, если не секрет? В особенности если этот файл открыт в другой программе без FILE_SHARE_READ ... (кроме шуток, действительно интересует этот вопрос).

Автор: Akella 10.6.2009, 23:59
http://forum.vingrad.ru/index.php?showtopic=21411&view=findpost&p=260327

и т.д.
http://forum.vingrad.ru/forum/topic-226153/hl/file_share_read/index.html
http://www.delphisources.ru/pages/faq/base/read_opened_file.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)