Просмотр полной версии : Синтаксис ругается)))
const
name = 'tester1oo5oo' ;
var
Timer01:TTimer;
TimerCyrcle01:Integer;
procedure Init;
begin
Timer01 := TTimer.Create(nil) ;
Timer01.Interval := 500;
Timer01.Enabled := False ;
Timer01.Ontimer := @OnTimer01 ;
end;
procedure Free;
begin
Timer01.Free ;
end;
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
end;
2: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
end;
3: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
end;
end;
begin
if FromClient and((pck=HStr('38 41 04 42 04 30 04 40 04 42 04 00 00 00 00 00 00'))) then begin
Timer01.enabled:=true;
end.
На последнем энде ругается, где ошибка?
Еще одного end; не хватает. После включения таймера.
Ну или убрать лишний begin, после then.
Еще одного end; не хватает. После включения таймера.
Ну или убрать лишний begin, после then.
const
name = 'tester1oo5oo' ;
var
Timer01:TTimer;
TimerCyrcle01:Integer;
procedure Init;
begin
Timer01 := TTimer.Create(nil) ;
Timer01.Interval := 500;
Timer01.Enabled := False ;
Timer01.Ontimer := @OnTimer01 ;
end;
procedure Free;
begin
Timer01.Free ;
end;
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
end;
2: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
end;
3: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
end;
end;
begin
if FromClient and((pck=HStr('38 41 04 42 04 30 04 40 04 42 04 00 00 00 00 00 00'))) then begin
Timer01.enabled:=true; end;
end.
все ровно не хочет, пробывал добавлять еще эндов, получилось что на
end;end;end; оно еще кричало на последний энд с точкой, а если ставить уже 4 энд то кричало на 4-ый и забывало на то что с точкой
Case Должен заканчиваться end'ом.
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin
buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
end;
2: begin
buf := hstr('21 6D ... 00') ;
SendToServerEx(name) ;
end;
3: begin
buf := hstr('21 6D ... 00') ;
SendToServerEx(name) ;
end;
end;
end;
спасибо буду знать :)
Добавлено через 8 минут
А теперь помогите пож разобратся с самим скриптом.
const
name = 'tester1oo5oo' ;
var
Timer01:TTimer;
TimerCyrcle01:Integer;
procedure Init;
begin
Timer01 := TTimer.Create(nil) ;
Timer01.Interval := 1500;
Timer01.Enabled := False ;
Timer01.Ontimer := @OnTimer01 ;
end;
procedure Free;
begin
Timer01.Free ;
end;
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
end;
2: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
end;
3: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
end;
end;
end;
begin
if FromClient and((pck=HStr('38 41 04 42 04 30 04 40 04 42 04 00 00 00 00 00 00'))) then begin
TimerCyrcle01:=1;
Timer01.enabled:=true; end;
end.
Все время выполняется первый (или второй пакет) циклом, тоесть неперходит на третий пакет
Добавлено через 1 час 28 минут
эй ребят, нельзя чтоб тема упала без ответа)
supernewbie
05.10.2010, 20:48
а что с ним собственно? почему не увеличиваешь переменную?
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=2;
end;
2: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=3;
end;
3: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
TimerCyrcle01:=1;
end;
end;
end;
а что с ним собственно? почему не увеличиваешь переменную?
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=2;
end;
2: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=3;
end;
3: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
TimerCyrcle01:=1;
end;
end;
end;
спасиб, а можно чтоб он выполнил все нужные пакеты тока 1 раз, а не зацикленно?
Добавлено через 3 минуты
и от чего зависят эти цифры?
TimerCyrcle01:=1;
supernewbie
05.10.2010, 22:31
Procedure OnTimer01(Sender : TObject) ;
begin
case TimerCyrcle01 of
1: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=2;
end;
2: begin buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=3;
end;
3: begin buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
TimerCyrcle01:=1;
Timer01.Enabled := False;
end;
end;
end;
Дак ты проверяешь, если 1: то отправлять такой пакет, если 2: то отправлять такой пакет, если 3: то отправлять такой пакет.
А тут ты делаешь переменную равную 1, таймер проверяет, переменная равна 1... Отправляет пакет и делает её равной 2. Потом снова палит, переменная равна 2, отпраляет пакет и делает её равной 3 и так по кругу) короче хреновый из меня учитель)
я лично не вижу различей вот в этом коде
Procedure OnTimer01(Sender : TObject) ;
begin
if TimerCyrcle01=1 then
begin
buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=2;
exit;
end;
if TimerCyrcle01=2 then
begin
buf := hstr('04 76 19 10 48') ;
SendToServerEx(name) ;
TimerCyrcle01:=3;
exit;
end;
if TimerCyrcle01=3 then
begin
buf := hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 35 00 37 00 37 00 00 00') ;
SendToServerEx(name) ;
TimerCyrcle01:=1;
Timer01.Enabled := False;
exit;
end;
end;
разве что case удобнее
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot