jak zrobić że co sekunde odczytywało i tekst z edit1.text do edit2.text ale co jedn znak , czyli jak w edit1.terxt jest napisane 'test' to co sekunde ma do edit2.text wpisywac najpierw 't' potem 'e' , 's', 't' czyli pokojeji
oczywiście w DELPHI :)
jak zrobić że co sekunde odczytywało i tekst z edit1.text do edit2.text ale co jedn znak , czyli jak w edit1.terxt jest napisane 'test' to co sekunde ma do edit2.text wpisywac najpierw 't' potem 'e' , 's', 't' czyli pokojeji
oczywiście w DELPHI :)
wkładasz Timera inetrval 1000
globalna zmienna cos : byte;
ontimer
Edit2.text:=Edit2.text+Edit1.text[cos];
inc(cos);
coś nie działa
poprosu nic sie nie pojawia
gdzie jest błąd
procedure TForm1.Timer1Timer(Sender: TObject);
VAR
cos : byte;
begin
Edit2.text:=edit1.text+Edit1.text[cos];
inc(cos);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
co: Byte;
nie ma być w zmiennych procedury timmera tylko globalnej! Wpisz to np. w PRIVATE.
i zrób może jeszcze w procedurce timmera
if co>Length(Edit1.Text) then Timer1.Enabled:=False - by to włączyć :)
procedure TForm1.Timer1Timer(Sender: TObject);
[b]const
cos: byte = 1[/b];
begin
Edit2.text:=edit1.text+Edit1.text[cos];
inc(cos);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
[b]const
cos: byte = 1[/b];
const?
to ma być zmienna !
jak tam masz
var
Form1 : TForm1;
to daj: cos : byte = 1 ;
To jest zmienna. Przynajmniej tak było do Delphi 5. W 6 trzeba włączyć pewną opcję kompilatora.
To jest zmienna. Przynajmniej tak było do Delphi 5. W 6 trzeba włączyć pewną opcję kompilatora.
:-D Wystarczy const zaminić na var:
var
cos: Byte = 1;
Jak widać bardziej intuicyjne niż const z Pascala.
var
cos: Byte = 1;
To nie przejdzie...
To nie przejdzie...
Przez co nie przejdzie bo kompilator kompiluje ...
Przez co nie przejdzie bo kompilator kompiluje ...
Jestem zszokowany. U mnie kiedyś wywalał błąd, że takie konstrukcje nie mogą wystąpić w procedurach. Chlip ;-(
na pewno to działa w Delphi 6. w innych nie wiadomo...
const
cos: byte = 1;
działało do wersji 5 (może 6), ale Delphi 7 tego nie traktuje jako zmienną statyczną, wiec Inc(cos) jest nie możliwe
var
cos: Byte = 1;
może być użyte przed sekcją implementation
Więc dla Delphi 4,5
procedure TForm1.Timer1Timer(Sender: TObject);
const
cos : byte =1;
begin
Edit2.text:=edit2.text+Edit1.text[cos];
Inc(cos) ;
IF cos > length(Edit1.text) then timer1.Enabled:=False ;
end;
będzie poprawnie
dla wersji nowszych można pisać:
...
var
Form1: TForm1;
cos : byte = 1 ;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit2.text:=edit2.text+Edit1.text[cos];
Inc(cos) ;
IF cos > length(Edit1.text) then timer1.Enabled:=False ;
end;
...
lub zaniechać podawania wartości początkowej przy deklaracji, robiąc to w :
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:='';
cos:=1;
timer1.Enabled:=true;
end;
dzięki czemu można wielokrotnie wykorzystać ten efekt.
a cos zadeklarować :
w
private
cos : byte ;
{ Private declarations }
no może jeszcze wspomnę że dla byte tekst nie może być dłuższy niż 255 znaków (ale to powinnobyć oczywiste).
const
cos: byte = 1;działało do wersji 5 (może 6), ale Delphi 7 tego nie traktuje jako zmienną statyczną, wiec Inc(cos) jest nie możliwe
Jest od tego jakaś opcja kompilatora.
var
cos: Byte = 1;może być użyte przed sekcją implementation
Czyli tak tak jak pisałem.
Jednym słowem *****
Trzymanie sie standartów rlz! ;]
Tak serio to kompletnie nie rozumiem takiego czegoś po co to komu?
Żeby consty zwiększać?
const
cos: byte = 1;
działało do wersji 5 (może 6), ale Delphi 7 tego nie traktuje jako zmienną statyczną, wiec Inc(cos) jest nie możliwe
Jest od tego jakaś opcja kompilatora.
</quote>Rzeczywiście znalazłem
{$J+}
Od delphi 2 do 5 jest domyślnie +
w nowszych na - , więc trzeba zmieniać.
Nie mniej jednak nie jest to zalecane rozwiązanie.
Jak by nie patrzeć wszyscy mają rację.