Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.029 c
14-84698
Vlad Oshin
2003-06-05 11:15
2003.06.26
А помните? ..И ему было только 16 лет!?!


1-84352
testthewest
2003-06-16 15:29
2003.06.26
Как перетащить файл ИЗ моей программы в проводник


3-84042
Grey_g
2003-06-01 14:10
2003.06.26
Error


4-84849
Xeon
2003-04-27 08:26
2003.06.26
Запуск просторонних приложений.


14-84699
BJValentine
2003-06-04 12:42
2003.06.26
Com port





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский