| 
| 
 | Вопрос # 191/ вопрос открыт / | 
 |  как копировать файлы функцией CopyFileEx со стату баром? что только не перепробовал какие где параметры кое как разобраться не могу. есть ли простенький пример применения фунции? 
|  |   Вопрос задал: терехин алексей сергеевич (статус: Посетитель)Вопрос отправлен: 10 декабря 2006, 20:28
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: min@y™ Хотел, было, уже сам, почитавши хэлп, написать примерчик, но вспомнил, что где-то я уже это видел.
 Набрал в гугле "Копируем файл с индикатором процесса" и первая же ссылка и есть этот пример.
 
 http://articles.org.ru/cfaq/index.php?qid=715&frommostrecent=yes
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 11 декабря 2006, 09:11
 Оценка за ответ: 3
 Комментарий к оценке: зачёт |  Ответ #2. Отвечает эксперт: Матвеев Игорь Владимирович Здравствуйте, терехин алексей сергеевич!Все есть в MSDN и даже в Delphi Help (Win32 Programmer's Reference). Все довольно просто, есть только одна тонкость: в CopyFileEx передается параметр pbCancel, который должен быть указателем на переменную Boolean, так вот, эта переменная не должна быть локальной.
 
 Готовый пример смотрите в прикреплённом файле.
 
 Ключевой код приведен в приложении.
 К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 
 Приложение:Переключить в обычный режим function CopyProgressRoutine(  TotalFileSize,  TotalBytesTransferred,  StreamSize,  StreamBytesTransferred: LARGE_INTEGER;  dwStreamNumber,  dwCallbackReason: DWORD;  hSourceFile,  hDestinationFile: THandle; begin      if dwCallbackReason = CALLBACK_STREAM_SWITCH then   TProgressBar(lpData).Max := TotalFileSize.QuadPart;   TProgressBar(lpData).Position := TotalBytesTransferred.QuadPart;   Application.ProcessMessages; Result := PROGRESS_CONTINUE;end; procedure TForm1.Button1Click(Sender: TObject);var  Ch1, Ch2   : PChar;  CallBack   : TFNProgressRoutine;  ErrCode    : Integer;begin SetEnabled(False);  FCancelled := False; Ch1 := PChar(Edit1.Text); Ch2 := PChar(Edit2.Text); if CopyFileEx(Ch1, Ch2,                ProgressBar1, @FCancelled, COPY_FILE_RESTARTABLE) then        else         begin           ErrCode := GetLastError;           end; ProgressBar1.Position := 0;  SetEnabled(True);end;
|  | Ответ отправил: Матвеев Игорь Владимирович (статус: Студент)Время отправки: 11 декабря 2006, 10:54
 Оценка за ответ: 5
 Комментарий к оценке: наконец то понятное объяснение ) |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |