Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Вопрос про копирование файлов   Найти похожие ветки 

 
Dimich1978 ©   (2003-06-16 11:34) [0]

При некоторых событиях в программе мне необходимо скопировать файл, все бы ничего, но такая ситуация когда файл еще копируется, а поступило сообщение что надо копировать его снова...подскажите как можно это сотворить. Вот мой код для копирования файлов:
function WindowsCopyFile(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_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
f.hNameMappings:= Nil;
f.lpszProgressTitle:= Nil;
result:=ShFileOperation(F) = 0;
end;


 
clickmaker ©   (2003-06-16 11:37) [1]

А копирование в отдельном потоке? Тогда так
hEvent := CreateEvent
Начало копирования - SetEvent(hEvent
Поступило сообщение, что надо копировать - WaitForSingleObject(hEvent
Копирование закончилось - ResetEvent(hEvent


 
Dimich1978 ©   (2003-06-16 11:59) [2]

а можно просто дождаться когда закончится копирование и начать заново копировать...как бы выстроить коипирование в список.


 
clickmaker ©   (2003-06-16 12:52) [3]

А какие проблемы? StringList c путями в виде DestPath=SrcPath. Поставить в очередь - Add, скопировал - Delete


 
Dimich1978 ©   (2003-06-16 12:54) [4]

а как определять что копирование завершено? В остальном согласен проблем нетути(используя мой метод копирования)


 
suric   (2003-06-16 13:12) [5]

А что если использовать чтение одного и того же файла функцией Win32 API ReadFile в разных потоках, но при этом исходный файл
ОТКРЫТЬ функцией FileHandle=Createfile("filename",FILE_SHARE_READ,0,NIL,open_eXISTING,0,NIL);
параметор FILE_SHARE_READ даст раздельный доступ для нескольких потоков.


 
clickmaker ©   (2003-06-16 13:16) [6]

Dimich1978 © (16.06.03 12:54)
а как определять что копирование завершено?


SetEvent(hEvent);
result:=ShFileOperation(F) = 0;
ResetEvent(hEvent);

// где-то в другом месте
WaitForSingleObject(hEvent, INFINITE);
// копирование завершено
...




Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-84357
Александр-И
2003-06-16 15:10
2003.06.26
Как скрыть свойство в Object Inspector


14-84551
VAleksey
2003-06-03 15:05
2003.06.26
А так ли много в Вашей жизни зависит от Вас самих?


1-84347
Alta
2003-06-16 13:42
2003.06.26
WideChar в Char?


4-84816
sucer
2003-04-22 10:09
2003.06.26
Проблема с HOOK N2.Как перехватить?


3-84037
olevar_y
2003-06-02 05:54
2003.06.26
Как встроить Case_Insensetive в SQL запрос Like