![]() |
|
|
#1
|
|||
|
|||
![]() Доброго времени суток! Меня зовут Виталий, я только учусь программировать посредством Delphi. Сейчас пытаюсь научиться искать слова в компоненте TMemo и оперировать ими.
Моя рабочая программа: http://filestore.com.ua/?d=94AC1EA24 В Memo находится текст, программа умеет находить строку с нужным мне словом, копировать её в переменную, выделять определенные циферки, которые я использую в своей формуле, ну и в конце – вывести результат посредством ShowMessage. Программа состоит всего из одной процедуры: Код:
procedure TForm1.btn2Click(Sender: TObject); var i: Word; s,firstznach,secondznach,celayastroka,poi: string; zaq,zaw: Integer; xsw: Real; begin for i:=0 to mmo1.Lines.Count-1 do if pos('STOPPAGE',mmo1.Lines.Strings[i])>0 then celayastroka:=mmo1.Lines.Strings[i]; firstznach:=Copy(celayastroka,1,3); secondznach:=Copy(celayastroka,4,3); zaq:=StrToInt(firstznach); zaw:=StrToInt(secondznach); xsw:=(zaq*255)+(zaw/2+1); poi:=FloatToStr(xsw); ShowMessage(poi); end; end. Не судите строго ![]() Теперь немного о том, что мне необходимо. Хотелось бы чтобы в случае else моя процедура ждала несколько секунд, допустим посредством sleep(1000) и переходила в свое начало, тоесть грубо говоря – продолжала поиск слова даже если его нет… это необходимо, поскольку в последующем этапе планирую реализовать загрузку разного текста в TMemo. И очень хотелось бы, чтобы процедура начинала свою работу с момента запуска программы… существует ли такое событие в Delphi? Заранее спасибо за ответы! С уважением Виталий. |
#2
|
||||
|
||||
![]() Вынеси весь этот код в таймер (TTimer), выставь нужное время (по-умолчанию установлена 1 секунда) и дальше по обстоятельствам.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Реализовал процедуру следующим образом:
Код:
procedure TForm1.tmr1Timer(Sender: TObject); var i: Word; s,firstznach,secondznach,celayastroka,poi: string; zaq,zaw: Integer; xsw: Real; begin tmr1.Enabled:=True; for i:=0 to mmo1.Lines.Count-1 do if pos('STOPPAGE',mmo1.Lines.Strings[i])>0 then celayastroka:=mmo1.Lines.Strings[i]; firstznach:=Copy(celayastroka,1,3); secondznach:=Copy(celayastroka,4,3); zaq:=StrToInt(firstznach); zaw:=StrToInt(secondznach); xsw:=(zaq*255)+(zaw/2+1); poi:=FloatToStr(xsw); ShowMessage(poi); if xsw > 0 then begin tmr1.Enabled:=False; end; end; Только вот есть одна проблемка, если слова «STOPPAGE» в данный момент в компоненте TMemo – нет, то появляется ошибка: ![]() С периодичностью равной значению Interval компонента [b]TTimer[b]. В будущем планируется, что ключевое слово может появиться в любое время – именно в этом и состоит проблемка… помогите решить. |
#4
|
||||
|
||||
![]() Код:
procedure TForm1.tmr1Timer(Sender: TObject); var i: Word; s,firstznach,secondznach,celayastroka,poi: string; zaq,zaw: Integer; xsw: Real; begin tmr1.Enabled:=True; for i:=0 to mmo1.Lines.Count-1 do if pos('STOPPAGE',mmo1.Lines.Strings[i])>0 then begin celayastroka:=mmo1.Lines.Strings[i]; firstznach:=Copy(celayastroka,1,3); secondznach:=Copy(celayastroka,4,3); zaq:=StrToInt(firstznach); zaw:=StrToInt(secondznach); xsw:=(zaq*255)+(zaw/2+1); poi:=FloatToStr(xsw); ShowMessage(poi); if xsw > 0 then begin tmr1.Enabled:=False; end; end; end; |
#5
|
|||
|
|||
![]() Помогло. Простите что сам не смог решить столь простую проблему... опыта мало, окно с ошибкой немного сбило с толку.
|