![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файлы [D7, Win2k]
NATA © (2004-10-22 13:45:00)еще раз добрый день...такая проблема мне надо копировать файл с одного место на другое но вот в чем проблема...файл который надо копировать это архив создоваемы другой программой а как моей программе понять можно ли его начать копировать(т.е. завершилось ли архивирование)????
clickmaker (2004-10-22 14:55:00) [1]
> [6] NATA (22.10.04 14:42)
> извение за глупый вопрос а hFile это что за тип?????
var
hFile: THandle;
dwError: cardinal;
Anatoly Podgoretsky (2004-10-22 14:47:00) [2]NATA (22.10.04 14:27) [4]
Windows
NATA (2004-10-22 14:45:00) [3]hFile := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
пишет что нехватает ( но := найдены....
Ega23 (2004-10-22 14:44:00) [4]Есть маза, что тебе рановато хвататься за такие задачи. Хотя....
Ega23 (2004-10-22 14:44:00) [5]THandle. Или HWND, надо смотреть.
NATA (2004-10-22 14:42:00) [6]извение за глупый вопрос а hFile это что за тип?????
и вообще надо ли подключать модуль какой нибуть?
NATA (2004-10-22 14:42:00) [7]
> clickmaker © (22.10.04 14:41) [5]
>
> > [4] NATA (22.10.04 14:27)
>
> а что, так не компилируется?
неа...:(
clickmaker (2004-10-22 14:41:00) [8]
> [4] NATA (22.10.04 14:27)
а что, так не компилируется?
NATA (2004-10-22 14:27:00) [9]
> clickmaker © (22.10.04 13:57) [1]
> while (true) do begin
> hFile := CreateFile(PChar(FileName), GENERIC_READ or
> GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
> dwError := GetLastError;
> if (hFile <> INVALID_HANDLE_VALUE) then
> CloseHandle(hFile);
> if (dwError <> ERROR_SHARING_VIOLATION) then
> Break;
> Sleep(2000);
> end;
а модуль нужно какой нибуть подключать?
> // теперь можно копировать
Romkin (2004-10-22 14:04:00) [10]А может, попроще, через FindFirstChangeNotification?
snake1977 (2004-10-22 13:58:00) [11]сталкивался с такой проблеммой когда требуется переписыватьфайл и не известно создан он до конца другим процессом или нет.
было масса предложений, но верного способа я так и не нашел :)
в ходе так сказать исследования этой проблеммы могу только сказать что:
если это дело присходит в 2000/NT/XP, то можеш не беспокоиться, система не даст тебе его скопировать пока он не будет освобожден другим процессом.
в 95/98/МЕ проблема остается
мне предлагали следующие варианты
1. делать RenameFile() пока резултатом выполнения не будет True
2. копировать файл и сравнивать его размер с исходным
clickmaker (2004-10-22 13:57:00) [12]while (true) do begin
hFile := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
dwError := GetLastError;
if (hFile <> INVALID_HANDLE_VALUE) then
CloseHandle(hFile);
if (dwError <> ERROR_SHARING_VIOLATION) then
Break;
Sleep(2000);
end;
// теперь можно копировать