Вниз
Скачать: CL | DM;

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

← →
mmms-   (2006-09-15 11:47) [0]

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, пробую вывести ее в переменную, тоже ничего не наблюдается..


← →
Sam Stone ©   (2006-09-15 11:49) [1]

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


← →
Zeqfreed ©   (2006-09-15 11:58) [2]

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


← →
default ©   (2006-09-15 12:27) [3]

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


← →
Нулевой ©   (2006-09-15 12:50) [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:55) [5]

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


← →
Нулевой ©   (2006-09-15 12:58) [6]


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

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


← →
han_malign ©   (2006-09-15 13:28) [7]

{$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);



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
2-1158666204
BFG9k
2006-09-19 15:43
2006.10.08
Чтение файла в строку


2-1159105448
Серый
2006-09-24 17:44
2006.10.08
Метка


3-1154959675
VadimSpb
2006-08-07 18:07
2006.10.08
Индикатор при выполнении запроса


15-1158350716
Германн
2006-09-16 00:05
2006.10.08
Любителям хохм на футбольную тему


5-1140551339
tvv
2006-02-21 22:48
2006.10.08
Загрузка компонента из DLL




   Наверх