Главная страница
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.47 MB
Время: 0.017 c
1-84207
Tolyan
2003-06-12 18:19
2003.06.26
Сортировка в TOpenDialog


3-84016
Avreliy
2003-05-30 16:30
2003.06.26
---|Ветка была без названия|---


1-84260
VISA
2003-06-13 13:44
2003.06.26
Активизация формы.


4-84837
anod
2003-04-20 15:59
2003.06.26
TrackBar


14-84738
killer
2003-06-06 00:54
2003.06.26
TBLODStream