|
#1
|
|||
|
|||
httgettext
Привет всем. Имеется код:
Код:
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
|
|||
|
|||
Спасибо Вам, добрый человек, все работает
|