![]() |
|
|
#1
|
||||
|
||||
|
Код:
potokkomand1:=TstringList.Create;
PK1:=TstringList.Create;
PK1.add('7559384=hello');
PK1.add('7559384=hello');
PK1.add('7559384=hello');
potokkomand1:=PK1;
Timer1potok:=True;
If Timer1potok = True then
begin
Timer1potok:=false;
if potokkomand1.Count-1 > 6 then
begin
for mem1:=potokkomand1.Count-1 Downto 0 do
begin
UIN1:=copy(potokkomand1.strings[mem1],1,pos('=',potokkomand1.strings[mem1])-1);
Msg1:=copy(potokkomand1.strings[mem1],pos('=',potokkomand1.strings[mem1])+1,length(potokkomand1.strings[mem1]));
potokkomand1.Delete(mem1);
Form1.obrabotchik1(UIN1, Msg1);
sleep(200);
end;
end
else
begin
for mem1:=potokkomand1.Count-1 DownTo 0 do
begin
UIN1:=copy(potokkomand1.strings[mem1],1,pos('=',potokkomand1.strings[mem1])-1);
Msg1:=copy(potokkomand1.strings[mem1],pos('=',potokkomand1.strings[mem1])+1,length(potokkomand1.strings[mem1]));
potokkomand1.Delete(mem1);
Form1.obrabotchik1(UIN1, Msg1);
end;
end;
end;кто скажет почему не работает, ставил точки останова, до функций выделенных красным, почемуто не выполняются они, хотя синие выполнялись |
|
#2
|
||||
|
||||
|
Код:
potokkomand1:=TstringList.Create;
PK1:=TstringList.Create;
PK1.add('7559384=hello');
PK1.add('7559384=hello');
PK1.add('7559384=hello');
potokkomand1:=PK1;
Timer1potok:=True; // за чем это?
If Timer1potok = True then // оно и так будет True, можно убрать if.
// также на будущее не пиши так: if(x=True), пиши так: if(x) then ...;
begin
Timer1potok:=false;
if potokkomand1.Count-1 > 6 then // здесь -1 не надо я так полагаю
begin
for mem1:=potokkomand1.Count-1 Downto 0 do
begin
UIN1:=copy(potokkomand1.strings[mem1],1,pos('=',potokkomand1.strings[mem1])-1);
Msg1:=copy(potokkomand1.strings[mem1],pos('=',potokkomand1.strings[mem1])+1,length(potokkomand1.strings[mem1]) - pos('=', potokkomand1.strings[mem1]));
potokkomand1.Delete(mem1);
Form1.obrabotchik1(UIN1, Msg1);
sleep(200);
end;
end
else
begin
for mem1:=potokkomand1.Count-1 DownTo 0 do
begin
UIN1:=copy(potokkomand1.strings[mem1],1,pos('=',potokkomand1.strings[mem1])-1);
Msg1:=copy(potokkomand1.strings[mem1],pos('=',potokkomand1.strings[mem1])+1,length(potokkomand1.strings[mem1]) - pos('=',potokkomand1.strings[mem1]));
potokkomand1.Delete(mem1);
Form1.obrabotchik1(UIN1, Msg1);
end;
end;
end; |
|
#3
|
||||
|
||||
|
я проверял переменная potokkomand1 забивается только почемуто функции не активируются после for mem1:=potokkomand1.Count-1 DownTo 0 do, по идее такое может быть если в potokkomand1 нету совсем строк,
|
|
#4
|
||||
|
||||
|
Ну а ты дебагером просмотри значение переменной при выполнении и узнаешь.
|
|
#5
|
||||
|
||||
|
щас кину код
|
|
#6
|
||||
|
||||
|
Код:
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String); begin PK1.add(UIN+'='+Msg); end; Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1potok:=True; MyThread:= TMyThread.Create; end; Код:
constructor TMyThread.Create; begin Create(True); FreeOnTerminate := True; после завершения своего кода поток завершится сам Priority := tpNormal; Resume; end; Код:
procedure TMyThread.Execute;
var
mem1: integer;
UIN1,Msg1,UIN2,Msg2,UIN3,Msg3,UIN4,Msg4,UIN5,Msg5,UIN6,Msg6,UIN7,Msg7,UIN8,Msg8,UIN9,Msg9,UIN10,Msg10: string;
potokkomand1,potokkomand2,potokkomand3,potokkomand4,potokkomand5,potokkomand6,potokkomand7,potokkomand8,potokkomand9,potokkomand10: TstringList;
begin
potokkomand1:=TstringList.Create;
potokkomand2:=TstringList.Create;
potokkomand3:=TstringList.Create;
potokkomand4:=TstringList.Create;
potokkomand5:=TstringList.Create;
potokkomand6:=TstringList.Create;
potokkomand7:=TstringList.Create;
potokkomand8:=TstringList.Create;
potokkomand9:=TstringList.Create;
potokkomand10:=TstringList.Create;
potokkomand1:=PK1;
potokkomand2:=PK2;
potokkomand3:=PK3;
potokkomand4:=PK4;
potokkomand5:=PK5;
potokkomand6:=PK6;
potokkomand7:=PK7;
potokkomand8:=PK8;
potokkomand9:=PK9;
potokkomand10:=PK10;
PK1.Clear;
PK2.Clear;
PK3.Clear;
PK4.Clear;
PK5.Clear;
PK6.Clear;
PK7.Clear;
PK8.Clear;
PK9.Clear;
PK10.Clear;
If Timer1potok = True then
begin
Timer1potok:=false;
if potokkomand1.Count-1 > 6 then
begin
for mem1:=potokkomand1.Count-1 Downto 0 do
begin
UIN1:=copy(potokkomand1.strings[mem1],1,pos('=',potokkomand1.strings[mem1])-1);
Msg1:=copy(potokkomand1.strings[mem1],pos('=',potokkomand1.strings[mem1])+1,length(potokkomand1.strings[mem1]));
potokkomand1.Delete(mem1);
Form1.obrabotchik1(UIN1, Msg1);
sleep(200);
end;
end
else
begin
for mem1:=potokkomand1.Count-1 DownTo 0 do
begin
UIN1:=copy(potokkomand1.strings[mem1],1,pos('=',potokkomand1.strings[mem1])-1);
Msg1:=copy(potokkomand1.strings[mem1],pos('=',potokkomand1.strings[mem1])+1,length(potokkomand1.strings[mem1]));
potokkomand1.Delete(mem1);
Form1.obrabotchik1(UIN1, Msg1);
end;
end;
end; |
|
#7
|
||||
|
||||
|
таймер с периодом в 1 сек
|
|
#8
|
||||
|
||||
|
както странно
Код:
PK1.Clear; PK2.Clear; PK3.Clear; PK4.Clear; PK5.Clear; PK6.Clear; PK7.Clear; PK8.Clear; PK9.Clear; PK10.Clear; ![]() |
|
#9
|
||||
|
||||
|
чтото даже не нашел в инете чем может быть вызванна данная ошибка
Последний раз редактировалось ALexandr555, 23.01.2011 в 10:26. |