![]() |
|
|
#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 секунда) и дальше по обстоятельствам.
|
|
#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
|
|||
|
|||
|
Помогло. Простите что сам не смог решить столь простую проблему... опыта мало, окно с ошибкой немного сбило с толку.
|