Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файлы [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;
// теперь можно копировать


Наверх

Титульная страница Поиск, карта сайта Написать письмо