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

Вниз

как определить- закончена перекачка файла или нет?   Найти похожие ветки 

 
Suntechnic ©   (2002-03-12 18:49) [21]

>Юрий Зотов © (12.03.02 16:44)
В Delphi переведёте сами:

Первый проект следит за директорией с:\temp

Код:

DWORD dwWaitStatus;
HANDLE dwChangeHandle;


dwChangeHandle = FindFirstChangeNotification(
"C:\\temp", // directory to watch
FALSE, // do not watch the subtree
FILE_NOTIFY_CHANGE_SIZE);

if (dwChangeHandle == INVALID_HANDLE_VALUE)
ExitProcess(GetLastError());


while (TRUE)
{

// Wait for notification.

dwWaitStatus = WaitForSingleObject( dwChangeHandle, INFINITE);

switch (dwWaitStatus)
{
case WAIT_OBJECT_0:
if ( FindNextChangeNotification( dwChangeHandle) == FALSE )
ExitProcess(GetLastError());
break;

default:
ExitProcess(GetLastError());
}
}


Второй проект манипуляции с файлом:

HANDLE hf = CreateFile("C:\\temp\\bigfile.big", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
SetFilePointer(hf, 1048576, 0, FILE_BEGIN);
SetEndOfFile(hf);// Notification right after this line!!!!! File is still open
CloseHandle(hf);


Как я упоминал ранее мы сначала резервируем место на диске, а копирование будем производить позже. Например сразу после строчки SetEndOfFile(hf) мы выполним SetFilePointer(hf, 0, 0, FILE_BEGIN); И начнём писать с помощью WriteFile. В итоге: событие получено, файл реально на диск не записан.

Переведите в Delphi расставьте breakpoint-ы и сами посмотрите, что за чем происходит.



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

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

Наверх




Память: 0.46 MB
Время: 0.022 c
6-69942
Davile
2002-02-07 15:56
2002.04.22
TClientSocket


6-69967
fidget
2002-02-08 17:48
2002.04.22
TWebBrowser и Ctrl+C/Ctrl+V


1-69792
lipskiy
2002-04-09 23:36
2002.04.22
Как перекрыть стандартные цвета виндов?


1-69781
Darlok
2002-04-09 17:47
2002.04.22
Dll


1-69909
Сатир
2002-04-09 16:19
2002.04.22
Создание собственных редакторов свойств