Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.04.2011, 22:00
Harima Hario Harima Hario вне форума
Прохожий
 
Регистрация: 28.02.2011
Сообщения: 27
Репутация: 10
По умолчанию Вопрос по ProgressBar

Здравствуйте дорогие форумчане, помогите решить проблему с прогрессбаром.

Есть компонент TMemo который постепенно заполняется следующим текстом:

Цитата:
START-PAGE000000000
STOP--PAGE000004000
PAGE000000000
...
текст
...
PAGE000001000
...
текст
...
...
...
PAGE000003000
...
текст
...
VSE

Объясню что этот текст обозначает:
START-PAGE000000000 - номер первой страницы, выводится сразу.
STOP--PAGE000004000 - номер последней страницы, выводится приблизительно через секунд 10 после вывода START-PAGE.
PAGE000000000 - номер текущей страницы.

То есть в начале выводит общее количество страниц, в данном случае 4, дальше начинает идти текст нумерацией 1, 2, 3 и 4.

Теперь относительно расшифровки нумерации:
Цитата:
PAGE000001000

PAGE 000 001 000
{1=255} {1=1} {всегда 000}

Приведу пример:

PAGE000001000 = PAGE 000 001 000 (Равно 1)
PAGE000256000 = PAGE 000 255 000 (Равно 255)
PAGE001001000 = PAGE 001 001 000 (Равно 255+1=256)

Просто здесь 8 битный формат, и больше 255 в 3 розрядах быть не может...
То есть максимум это P255255000 это равно 65280.

Лучше всего привязатся к формуле:

PAGE 000 001 000
(a) (b) (c)

Реальное число = (a*255)+b

Вот процедуры, в которых я попытался реализовать то, что мне необходимо:
Код:
procedure SetMinMax(s:string);
var tmp,substr:string;
begin
  substr:='START-PAGE';
  if MatchesMask(s,substr+'*') then
  begin
    tmp:=Copy(s,Pos(substr,s)+length(substr),length(s));
    if IsNumber(tmp) then
    begin
      Form1.ProgressBar1.Min:=StrToInt(Copy(tmp,0,3))*255+StrToInt(Copy(tmp,4,3));
    end;
  end;
  substr:='STOP--PAGE';
  if MatchesMask(s,substr+'*') then
  begin
    tmp:=Copy(s,Pos(substr,s)+length(substr),length(s));
    if IsNumber(tmp) then
    begin
      Form1.ProgressBar1.Max:=StrToInt(Copy(tmp,0,3))*255+StrToInt(Copy(tmp,4,3))-1;
    end;
  end;
end;

procedure SetProgress(s:string);
var tmp,substr:string;
begin
  substr:='PAGE';
  if MatchesMask(s,substr+'*') then
  begin
    tmp:=Copy(s,Pos(substr,s)+length(substr),length(s));
    if IsNumber(tmp) then
    begin
      Form1.ProgressBar1.Position:=StrToInt(Copy(tmp,0,3))*255+StrToInt(Copy(tmp,4,3));
    end;
  end;
end;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025