Главная страница
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.024 c
14-84694
KSergey
2003-06-04 09:34
2003.06.26
Использует ли кто-либо серверы на AMD Athlon в круглосуточном...


1-84306
Yuraz
2003-06-13 21:33
2003.06.26
Функция проверки наличия в строке посторонних символов,промогите!


4-84846
sucer
2003-04-17 17:12
2003.06.26
Проблема с HOOK


1-84107
Yanis
2003-06-10 14:57
2003.06.26
Как узнать какой кнопкой мыши был сделан клик?


1-84127
Far
2003-06-07 18:00
2003.06.26
Edit