Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.021 c
1-13271
Seldon
2003-05-23 21:14
2003.06.05
ExtractIconEx


1-13293
SSL
2003-05-24 15:47
2003.06.05
MDI интерфейс. Метод Cascade.


3-13084
DruKiller
2003-05-17 21:58
2003.06.05
Скрещивание Delphi и MySQL


7-13498
Владимир-В
2003-04-03 14:56
2003.06.05
Работа с компонентами Async Pro


3-13053
gizar
2003-05-16 17:00
2003.06.05
LookUp - помогите!!! Может кто встречался с задачей.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский