Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подвисание проги и ProgressBar 
:(
    Опции темы
kwotz
Дата 9.3.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 25
Регистрация: 6.1.2007
Где: Майкоп

Репутация: нет
Всего: нет



В программе я использую процедуру для копирования, которая представлена ниже. Если я начинаю копировать большие файлы (порядка нескольких сот метров), то программа как бы подвисает, т.е. окно становиться белым полностью и до него нельзя достучаться, но программа копирует файлы. И как она завершает это дело, то работает без проблем. Как можно избежать этого? Если я использую процедуру CopyFile, то тоже самое.
И еще вопрос, как можно к процессу копирования прикрепить компонент ProgressBar?

Код

procedure CopyF(Source, Dest: string);
var
  SrcFile: Integer;
  DestFile: Integer;
  S: string;
  RetCode: Longint;
  OpenFileBuf: TOFStruct;
  FName: array[0..255] of Char;
begin
  StrPCopy(FName, Source);
  SrcFile := LZOpenFile(FName, OpenFileBuf, of_Read);
  StrPCopy(FName, Dest);
  DestFile := LZOpenFile(FName, OpenFileBuf, of_Create);

  RetCode := LZCopy(SrcFile, DestFile);
  if RetCode >= 0 then
    begin
      LZClose(SrcFile);
      LZClose(DestFile);
    end
  else
    begin
      Str(RetCode, S);
      MessageDlg('Не могу скопировать ' + Source + ' в ' +
      Dest + #13 + 'Код ошибки = ' + S, mtError, [mbOk], 0);
    end;
end;


PM MAIL   Вверх
ama_kid
Дата 9.3.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата
Как можно избежать этого?

Кури функцию CopyFileEx от MSDN и особенно про её ТРЕТИЙ параметр: lpProgressRoutine - The address of a callback function of type LPPROGRESS_ROUTINE that is called each time another portion of the file has been copied.
Либо пиши свою функцию копирования через BlockRead\BlockWrite, где будешь вызывать Application.ProcessMessages


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
MetalFan
Дата 9.3.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



опять LZ* функции... вы хоть понимаете, зачем их используете? или просто CtrlC-CtrlV откуда-то?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.