Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.02.2012, 00:32
Taemin Taemin вне форума
Прохожий
 
Регистрация: 07.02.2012
Сообщения: 45
Репутация: 10
По умолчанию Поиск строки

Доброго времени суток! Меня зовут Виталий, я только учусь программировать посредством 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  
Старый 07.02.2012, 00:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Вынеси весь этот код в таймер (TTimer), выставь нужное время (по-умолчанию установлена 1 секунда) и дальше по обстоятельствам.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 07.02.2012, 13:18
Taemin Taemin вне форума
Прохожий
 
Регистрация: 07.02.2012
Сообщения: 45
Репутация: 10
По умолчанию

Реализовал процедуру следующим образом:

Код:
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  
Старый 07.02.2012, 19:24
Аватар для movnet
movnet movnet вне форума
Начинающий
 
Регистрация: 24.07.2008
Сообщения: 127
Версия Delphi: Delphi 7
Репутация: 23
По умолчанию

Код:
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  
Старый 07.02.2012, 21:22
Taemin Taemin вне форума
Прохожий
 
Регистрация: 07.02.2012
Сообщения: 45
Репутация: 10
По умолчанию

Помогло. Простите что сам не смог решить столь простую проблему... опыта мало, окно с ошибкой немного сбило с толку.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025