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


Автор: Delphist 18.4.2008, 10:26
Есть такая функция для копирования файлов: 
Код

function CopyFile(FromFile, ToDir : string):
  boolean;
var
  F: TShFileOpStruct;
begin

  F.Wnd := 0; F.wFunc := FO_COPY;
  FromFile:=FromFile + #0; F.pFrom := PChar(FromFile);
  ToDir:=ToDir + #0; F.pTo:=PChar(ToDir);
  F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
  result:=ShFileOperation(F) = 0;
end;


Есть файл большим объемом на копирование которого требуется больше 20 сек.
Есть два процесса один поризводит копирование через мою функцию CopyFile, а другой спустя некоторое время, после того как началось копирование, например через 5 сек, пытается произвести запись в этот же файл. Скажите, пожалуйста, что будет происходить, второй процесс будет ожидать пока первый завершит копирование, или он же он произведет запись, или же он выдаст ошибку, или же что-то еще? 

Если более подробно, то есть клиент-серверное приложение работающее с БД, так вот файл о котором я говорил это файл БД InterBase, эта БД лежит на серваке к которому подключены клиенты, 1-ый процесс это клиент производящий копирование БД, а 
2-ой процесс, это клиент вносящий изменения в БД. И что будет происходит если 2-ой клиент производит изменения в БД,  в то время как 1-ый клиент производит копирование через функцию CopyFile.

Автор: Esperito 18.4.2008, 19:45
Топикстартер, когда ты мануалы начнёшь читать? Копировать файл БД, когда с БД идёт работа строго запрещено, ибо весьма вероятно, что копия будет неработоспособной, не говоря уж о потере и повреждении данных внутри неё.

Автор: Delphist 19.4.2008, 16:54
Цитата(Esperito @ 18.4.2008,  20:45)
Копировать файл БД, когда с БД идёт работа строго запрещено, ибо весьма вероятно, что копия будет неработоспособной, не говоря уж о потере и повреждении данных внутри неё.

Т.е. ты хочешь сказать, что блокировка файла для других процессов при его копировании не происходит?

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