![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProgressBar
Raiv © (2002-08-26 18:07:00)Как сделать ProgressBar, отображающий ход чтения текстового файла довольно большой длины (10-50Мб).
{bas} (2002-08-27 13:21:00) [1]еще есть процедура BlockRead
посмотрел размер файла разделил на BlockSize - вот тебе и прогресс бар
Alex4444444444 (2002-08-27 12:56:00) [2]> lipskiy
No kak-to glupovato chitat" file lish"nij raz tol"ko dlya
togo, chtoby vystavit" max v ProgressBar...
lipskiy (2002-08-27 11:08:00) [3]Кстати, насчет опредления числа строк в текстовике.
Я делал в свое время по тупому - прочитывал весь файл (readln), пока не кончится и инкрементировал счетчик строк.
Как ни странно, для 5Мб текстовика с переменной длиной строки (в среднем - 200 символов) это происходило НЕЗАМЕТНО на глаз.
Gipsy (2002-08-27 09:42:00) [4]Можно проще.
Ты всегда знаешь размер файла и кол-во прочитанных байт.
Дальше также как с кол-вом строк :)
MBo (2002-08-27 09:02:00) [5]ОК, тогда понятно.
Raiv (2002-08-27 09:00:00) [6]Кол-во байт в одной стоке я знаю - у меня фиксированный формат. Длину файла определил вот и все. Даже если при вычислениях будет небольшая ошибка, то этого практически не видно - но будет 99% загрузки файла и ProgressBar исчезнет или на 100% повисит лишние доли секунды - это не видно.
MBo (2002-08-27 08:42:00) [7]>Узнал кол-во строк в открываемом файле.
Как?
Raiv (2002-08-27 08:40:00) [8]Большое Вам спасибо за советы, но я зделал все очень просто и вроде работает!
1. Узнал кол-во строк в открываемом файле.
2. Разделил это кол-во на 100 (PBStep:=FL/100);
3. Вставил код при четнии файла:
.....
IF J=PBStep then begin
FormPBar.ProgressBar1.StepBy(PBStep);
Application.ProcessMessages;
J:=1;
end;
Inc(J);
......
И НИКАКИХ ТОРМОЗОВ!
Polevi (2002-08-26 18:44:00) [9]если у тебя win2k читай асинхронно
Krann (2002-08-26 18:13:00) [10]Можно его представить в виде файла памяти и считывать его кусочками прои считывании кусочка менять ProgressBar.Position