Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
Демидрол   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
4-1122032517
Zak3D[@Tm]
2005-07-22 15:41
2005.09.11
Как запустить другое приложение?


3-1122994392
Oleg_S
2005-08-02 18:53
2005.09.11
TQuery


2-1123491860
Андрей235
2005-08-08 13:04
2005.09.11
Как использовать свой курсор?


1-1124191188
Bombila
2005-08-16 15:19
2005.09.11
Как рисовать иконки с alpha-blend(ом)?


3-1122991719
vol
2005-08-02 18:08
2005.09.11
можно абдейт нескольких в одну строку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский