Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не могу разобратся с простым кодом (Бегущая строка из DelphiWorld


mmms- ©   (2006-09-15 11:47:00) 

procedure TForm1.Timer1Timer(Sender: TObject);
const
 LengthGoString = 10;
 Gostring = 'Этот код был взят с проекта Delphi World'+
 ' Выпуск 2002 - 2003! Этот код б';
 // Повторить столько символов - сколько в LengthGoString
const
 i: Integer = 1;
begin
 Label1.Caption := Copy(GoString, i, LengthGoString);
 Inc(i);
 if Length(GoString) - LengthGostring < i then
   i:=1;
end;


Во первых не компилируется, ошибка с константой i, пробую вывести ее в переменную, тоже ничего не наблюдается..


han_malign   (2006-09-15 13:28:00) [1]

{$WRITEABLECONST ON}

> чтобы код работал для различных значений LengthGoString

в тупую:

len:= LengthGostring - Length(GoString);
if(len < 0)then len:= 0;

Label1.Caption := Copy(GoString, i + 1, Length(GoString)) + DupeString(' ', len) + Copy(GoString, 1, i);
i:= ( i  + 1 ) mod Length(GoString);


Нулевой   (2006-09-15 12:58:00) [2]


> default ©   (15.09.06 12:55) [5]

Согласен, пусть пишет!
> Во первых не компилируется, ошибка с константой i


default   (2006-09-15 12:55:00) [3]

Нулевой ©   (15.09.06 12:50) [4]
компилиться-то будет, но если надо чтобы код работал для различных значений LengthGoString = 10; надо код переписать


Нулевой   (2006-09-15 12:50:00) [4]

А так?

...
var
 Form1: TForm1;
 i: Integer = 1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
const
 LengthGoString = 10;
 Gostring = 'Этот код был взят с проекта Delphi World' +
   ' Выпуск 2002 - 2003! Этот код б';
 // Повторить столько символов - сколько в LengthGoString
begin
 //i:=1;
 Label1.Caption := Copy(GoString, i, LengthGoString);
 Inc(i);
 if Length(GoString) - LengthGostring < i then
   i := 1;
end;
...


default   (2006-09-15 12:27:00) [5]

да и сам код фигня
вот поставим, например, LengthGoString = 3; и получим ерунду, лучше самому писать, тем более такой простой код


Zeqfreed   (2006-09-15 11:58:00) [6]

В Delphi нет статических локальных переменных. Тебе нужно объявить i либо глобально, либо полем формы. Присваивать значение константе, разумеется, нельзя. Поэтому код и не компилируется.


Sam Stone   (2006-09-15 11:49:00) [7]

Переменные константы вроде бы можно только глобальные объявлять.
i у тебя локальная, поэтому при каждом срабатывании таймера в ней черт знает что (теоретически 1 из-за const i: Integer = 1;)


Наверх

Титульная страница Поиск, карта сайта Написать письмо