Главная страница
    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.009 c
1-13260
Nikos
2003-05-23 18:26
2003.06.05
как узнать, какая из строк выбрана в таблице StringGrid?


1-13181
_sMile
2003-05-20 20:46
2003.06.05
Как отловить нажатие по элементу ListBox а?


1-13189
georg4
2003-05-25 01:05
2003.06.05
Treeview или Listview в реестре


6-13345
Puzzle
2003-04-02 12:32
2003.06.05
Как определить, что Dial-up соединение уже установлено?


1-13208
Программер
2003-05-26 14:37
2003.06.05
Как сделать Fullscreen





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский