![]() |
|
|
#1
|
|||
|
|||
|
Привет всем. Имеется код:
Код:
procedure cmd;
var
ts:Tstringlist;
st:string;
begin
ts:=Tstringlist.Create;
httpgettext('http://server.com/cmd.txt',ts);
st:=ts.strings[0];
if pos('cmd1',st)<>0 then
begin
******
******
sleep(10000);
cmd;
end
else
if pos('sd',st)<>0 then
begin
******
******
sleep(10000);
cmd;
endПроблема такова, сервер на котором лежит txt файл, часто недоступен, соответственно возникает ошибка "List index out of bounds (0)". Ну и до этого еще ошибка "Исключение неизвестное программное исключение (0x0eedfade) в приложении по адресу 0x7c812afb" Как правильно обработать ошибку? Ошибка возникает вот тут: Код:
if pos('cmd1',st)<>0 thenМожет быть есть какой есть другой вариант прочитать файл на сервере (желательно без компонентов) Буду признателен за все ответы. Спасибо. |
|
#2
|
|||
|
|||
|
для начала вот так:
Код:
procedure cmd;
var
ts:Tstringlist;
st:string;
begin
ts:=Tstringlist.Create;
Try
httpgettext('http://server.com/cmd.txt',ts);
st:=ts.strings[0];
if pos('cmd1',st)<>0 then
begin
******
******
end
else
if pos('sd',st)<>0 then
begin
******
******
end
else Raise Exception.Create('');
sleep(10000);
cmd;
Finally
ts.Free;
End;
end.но все-равно будет вылетать, т.к. у тебя тут бесконечная рекурсия. Я бы делал как то так: 1. Делаем таймер. Интервал ставим на 10000. 2. В обработчике делаем так: Код:
procedure TForm1.Timer1Timer(Sender : TObject);
begin
Timer1.Enabled := False;
Try
cmd;
Finally
Timer1.Enabled := True;
End;
end;Код:
procedure cmd;
var
ts:Tstringlist;
st:string;
begin
ts:=Tstringlist.Create;
Try
httpgettext('http://server.com/cmd.txt',ts);
st:=ts.strings[0];
if pos('cmd1',st)<>0 then
begin
******
******
end
else
if pos('sd',st)<>0 then
begin
******
******
end;
Finally
ts.Free;
End;
end;Если это консольное приложение и окна нет, то таймер заменяем такой конструкцией: Код:
While (True) Do
Try
cmd;
sleep(10000);
Except;
End; |
|
#3
|
|||
|
|||
|
Спасибо Вам, добрый человек, все работает
![]() |