Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Бегущая строка   Найти похожие ветки 

 
Демидрол   (2005-08-19 16:06) [0]

Подскажите где ошибка.. Заранее спасибо.
[Error] Unit1.pas(38): Left side cannot be assigned to

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;


 
Eraser ©   (2005-08-19 16:07) [1]

Демидрол   (19.08.05 16:06)
Подскажите где ошибка


В 38 строке.


 
Демидрол   (2005-08-19 16:10) [2]

Подскажите если не трудно, где именно ошибка.


 
Джо ©   (2005-08-19 16:16) [3]


>  [2] Демидрол   (19.08.05 16:10)
> Подскажите если не трудно, где именно ошибка.

В 2-х местах:
Inc(i);
и
i:=1;


 
Демидрол   (2005-08-19 16:20) [4]

По разному пробывал не получается. Подскажите как ее написать
чтобы реально работала.


 
Eraser ©   (2005-08-19 16:22) [5]

Демидрол   (19.08.05 16:20) [4]

const убери!
Константы менять нельзя, на то они и константы.


 
Демидрол   (2005-08-19 16:26) [6]

Eraser ©   (19.08.05 16:22) [5]
const убери!
{-----------------------------}
Действительно нужно было убрать, но строка не бегает :(


 
Eraser ©   (2005-08-19 16:26) [7]

Демидрол   (19.08.05 16:26) [6]

Ну тут уж алгоритм дорабатывать надо...


 
Savek   (2005-08-19 17:01) [8]

По-моему переменную I надо объявить не в процедуре а в модуле, чтобы она сохраняла предыдущее значение после выхода из процедуры


 
TStas ©   (2005-08-19 18:56) [9]

Реально работает
unit RunningText;

interface

uses
 SysUtils, Classes, Controls, StdCtrls, ExtCtrls;

type
 TRunningText = class(TCustomLabel)
 private
   { Private declarations }
    FTimer:TTimer;
   FText: String;  //Текст, который и будет бежать
   FTextLength: Byte; //Длинна бегущего текста
   FTextVelosity: Byte; //Букв в секунду
   procedure SetText(const Value: String);
   procedure SetTextLength(const Value: Byte);
   procedure SetTextVelosity(const Value: Byte);
   procedure Move(Sender:TObject);
 protected
   { Protected declarations }

 public
   { Public declarations }
   constructor Create(AOwner:TComponent); override;
   destructor Destroy; override;
   procedure RunText; //Запускает бег текста
   procedure StopText; //Останавливает текст
   published
   { Published declarations }
     property Color;
     property Font;
     property ParentColor;
     property ParentFont;
     property ParentShowHint;
     property Transparent;
     property Visible;

     property Text:String read FText write SetText;
     property TextLength:Byte read FTextLength write SetTextLength;
     property TextVelosity:Byte read FTextVelosity write SetTextVelosity;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("mine", [TRunningText]);
end;

constructor TRunningText.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Self.AutoSize:=true;
FTimer:=TTimer.Create(Self);
FTimer.Enabled:=false;
FTimer.Tag:=0;
FTimer.OnTimer:=Move;
FText:="RunningText";
FTextLength:=5;
TextVelosity:=5;

end;

destructor TRunningText.Destroy;
begin
FTimer.Free;
inherited Destroy;
end;

procedure TRunningText.Move(Sender:TObject);
var
 str:String;
 n1, n2:Integer;
begin
n1:=FTimer.Tag;
inc(n1);
n1:=n1 mod Length(Text);
FTimer.Tag:=n1; //Делаю так, чтобы в теге хранился нужный n1
inc(n1); //Но использую на единицу увеличенный
n2:=n1+FTextLength;
str:=Text;
while Length(str)<n2 do str:=str+" "+Text; //Приписываю нужное количество раз повторенный текст
Self.Caption:=Copy(str, n1, FTextLength);
end;

procedure TRunningText.RunText;
begin
FTimer.Enabled:=true;
end;

procedure TRunningText.SetText(const Value: String);
begin
FTimer.Tag:=0; //При записи обнуляю тег
FText := Value;
If FText="" then FText:="*";
end;

procedure TRunningText.SetTextLength(const Value: Byte);
begin
FTextLength := Value;
if FTextLength<5 then FTextLength:=5; //Меньше 5 символов не бежать
end;

procedure TRunningText.SetTextVelosity(const Value: Byte);
begin
FTextVelosity := Value;
if FTextVelosity<1 then FTextVelosity:=1;
if FTextVelosity>20 then FTextVelosity:=20;
FTImer.Interval:=round(1000/FTextVelosity); //Устанавливаю интервал таймера
end;

procedure TRunningText.StopText;
begin
FTimer.Enabled:=false;
end;

end.



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

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1123689907
kamerer
2005-08-10 20:05
2005.09.11
Документация по компонентам VCL


6-1116836925
Uninstall
2005-05-23 12:28
2005.09.11
Переход с Indy 9 на Indy 10.


3-1122525099
Ольга
2005-07-28 08:31
2005.09.11
Перевод пользовательской функции с T-SQL на PL/SQL


4-1121792397
NikotiN
2005-07-19 20:59
2005.09.11
как узнать имя открытого файла по его Handle?


1-1124393333
Yegorchic
2005-08-18 23:28
2005.09.11
Доступно ли новое имя для компоненты?