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

Вниз

Проблема с Gauge и копированием файлов в XP.   Найти похожие ветки 

 
Boris K.   (2003-05-22 19:55) [0]

На самом деле проблема заключается в том, что при отправке по сети файла (любого) таким методом (через Handle):
TotalRead := 0;
HandleFrom := FileOpen(SourceFile,fmOpenRead or fmShareDenyNone);
HandleTo := FileCreate(DestinationFile);
FileSize := GetFileSize(HandleFrom,nil);
FileSeek(HandleFrom,0,0);
FileSeek(HandleTo,0,0);
Repeat
BytesRead := FileRead(HandleFrom,Buffer,Size);
if BytesRead > 0
BytesWritten := FileWrite(HandleTo,Buffer,BytesRead);
TotalRead := TotalRead + BytesRead;
Gauge.Progress := Trunc((TotalRead / FileSize) * 100);
Until BytesRead = 0;
...
Индикатор улетает сразу на 100%, а остальную работу делает сам Windows XP. Как дать ему по рукам, чтобы индикатор работал корректно? При приеме файлов такого не случается. Другой метод - через AssignFile, BlockRead и BlockWrite не подходит по причине нежелания открывать файл для скачивания процедурой Reset на сетевых дисках "только для чтения".Если использовать потоки, то как в них прогрессометор заасунуть? В чем моя ошибка, кто-нибудь знает? Спасибо!


 
KA_ ©   (2003-05-22 20:20) [1]

Проверь, чему равна переменная Size в

> BytesRead := FileRead(HandleFrom,Buffer, Size);



 
Boris K.   (2003-05-23 06:43) [2]

Эту переменную я передаю в функцию копирования файлов и сам устанавливаю размер - от 128 bytes до 128k. Результат не меняется! :( ProcessMessages расставлен как положено...
Мысли есть какие?


 
Anatoly Podgoretsky ©   (2003-05-23 08:24) [3]

А сообщения будет Пушкин обрабатывать?


 
KA_ ©   (2003-05-23 08:44) [4]

TotalRead := 0;
HandleFrom := FileOpen(SourceFile,fmOpenRead or fmShareDenyNone);
HandleTo := FileCreate(DestinationFile);
FileSize := GetFileSize(HandleFrom,nil);
FileSeek(HandleFrom,0,0);
FileSeek(HandleTo,0,0);
Repeat
BytesRead := FileRead(HandleFrom,Buffer,Size);
if BytesRead > 0
BytesWritten := FileWrite(HandleTo,Buffer,BytesRead);
TotalRead := TotalRead + BytesRead;
Gauge.Progress := Trunc((TotalRead / FileSize) * 100);
Application.ProcessMessages;
Until BytesRead = 0;


 
Boris K.   (2003-05-23 10:59) [5]

Я же написал - "ProcessMessages расставлены как положено" - после каждой процедуры чтения-записи. Просто для экономии места я сократил процедуру: там еще при наличии ошибок везде определено:Exception! Так как насчет основного сабжа?


 
Boris K.   (2003-05-23 16:58) [6]

Таки никто и не знает как проблему решить, а мастера?



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
14-13451
Vlad Oshin
2003-05-15 09:24
2003.06.05
Не верится, но как объяснить?


14-13424
Карелин Артем
2003-05-19 14:22
2003.06.05
Дети Билли не любили..


1-13170
alexus
2003-05-21 11:32
2003.06.05
мерцание Image


3-13029
Imshanya
2003-05-16 11:56
2003.06.05
Проблема с использованием BatchMove


1-13224
alt7
2003-05-27 12:37
2003.06.05
TListView