Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2007, 11:00   #1
Македонский
Александр
Форумчанин
 
Аватар для Македонский
 
Регистрация: 15.08.2007
Сообщений: 112
По умолчанию Progressbar или Gauge

Есть текстовый, нужно чтобы программа прочитала строки в файле и при этом работал Gauge или ProgressBar, но проблема состоит в том, что файл очень большой (сотни тысяч строк) и почему-то Gauge имеет ограничение максимального значения и, соответственно, не работает... Не подскажете как в таких случаях отображать подобный процесс?
Македонский вне форума Ответить с цитированием
Старый 17.08.2007, 11:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чему равно MaxValue в этих компонентах?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2007, 11:10   #3
Македонский
Александр
Форумчанин
 
Аватар для Македонский
 
Регистрация: 15.08.2007
Сообщений: 112
По умолчанию

Последнему индексу строки текстового файла. Например, 700 000
Македонский вне форума Ответить с цитированием
Старый 17.08.2007, 11:17   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У меня работает. Код покажи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2007, 11:25   #5
Македонский
Александр
Форумчанин
 
Аватар для Македонский
 
Регистрация: 15.08.2007
Сообщений: 112
По умолчанию

procedure TForm1.N2Click(Sender: TObject);
var i:integer;
k:integer;
t:string; //значение глубины из файла
p,z:integer; //позиция 'E' и '.' в строке
buf:string; //строка в файле
x:real;
y:real;
f: TextFile;
fName: String;
begin
Series1.Clear; Chart1.UndoZoom;
if not OpenDialog1.Execute then exit else
fName:=OpenDialog1.FileName;
label3.Caption:=fName;
AssignFile(f,fName); form1.Caption:='Filter - '+fName;
try
Reset(f);
except
on EInOutError do
begin
ShowMessage('Ошибка доступа к файлу '+
fName);
exit;
end;
end; form4.Visible:=true;
i:=0;
while not EOF(f) do begin
readln(f,buf);
p:=pos('E',Buf);
t:=Copy(Buf,P+2,6);
z:=pos('.',t);
insert(',',t,z); delete(t,z+1,1);
If p<>0 then
y:=StrToFloat(t)
else exit;
x:=x+0.1;
Series1.AddXY(x,y);
series1.Labels[i]:=copy(Buf,0,p+1);
i:=i+1;
srezka.Caption:='СРЕЗКА: '+'0'+' см';
end;
form4.Gauge1.MaxValue:=700000; // к примеру...
//(а в файле действительно столько строк)
form4.Gauge1.Progress:=i;
form4.Visible:=False;
CloseFile (f);
end;
Македонский вне форума Ответить с цитированием
Старый 17.08.2007, 11:25   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

В процентах попробуй.
Alex21 вне форума Ответить с цитированием
Старый 17.08.2007, 11:31   #7
Македонский
Александр
Форумчанин
 
Аватар для Македонский
 
Регистрация: 15.08.2007
Сообщений: 112
По умолчанию

Не-а, такая же фигня... не отображает почему-то... увы и ах...
Македонский вне форума Ответить с цитированием
Старый 17.08.2007, 11:34   #8
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Такбы сразу и сказал:
Попробуй так:

Код:
 
while not EOF(f) do begin
Application.ProcessMessages;
и
Код:
i:=i+1;
Gauge1.Progress:=i;
{а потом уже END}
end;
Alex21 вне форума Ответить с цитированием
Старый 17.08.2007, 11:39   #9
Македонский
Александр
Форумчанин
 
Аватар для Македонский
 
Регистрация: 15.08.2007
Сообщений: 112
По умолчанию

Красиво, конечно, выводит график постепенно (у меня прога рисует график), но... очень медленно. Процесс никак ускорить нельзя?
Македонский вне форума Ответить с цитированием
Старый 17.08.2007, 11:42   #10
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Македонский Посмотреть сообщение
Последнему индексу строки текстового файла. Например, 700 000
Integer –2147483648..2147483647 signed 32-bit
Alex21 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос про Gauge Diamand Компоненты Delphi 7 28.11.2013 13:11
ProgressBar Makarov Компоненты Delphi 3 04.02.2008 22:42
ProgressBar Rahim1993 Общие вопросы Delphi 10 20.01.2008 21:28
ProgressBar pentiumForever Компоненты Delphi 2 07.09.2007 13:33