Главная » Статьи » Задачи по программированию

Выделить ключивое слово

Здравствуйте, решил выложить алгортм который я писал для своей программы.
Суть алгоритма следующая, он находт нужное слово выделяет его крсным, знаете многе "крутые" редакторы делают так, как бы "подсвечвают" служебные слова (Body, begin, end, string....) думаю многие сталквались с такой проблемой и вот мое решене 
 

procedure TFormMain.Lighting;
var
  i,ii,CurrPos,CurrPosS{,X,Y,P}:Integer;
  S:string;
begin
  X:=RichEdit1.CaretPos.X;
  Y:=RichEdit1.CaretPos.Y;
  P:=0;
  for i:=0 to Y-1 do P:=P+Length(RichEdit1.Lines[i])+2;
  P:=P+X;
  for i:=0 to CountPrivateWord-1 do begin
    CurrPos:=1;
    S:=RichEdit1.Text; //head
    S:=AnsiUpperCase(S);
    repeat
      CurrPosS:=Pos(PrivateWord[i],S);
      if CurrPosS>0 then begin
        RichEdit1.SelStart:=CurrPos+CurrPosS-2;
        RichEdit1.SelLength:=Length(PrivateWord[i]);
        RichEdit1.SelAttributes.Color:=clred;
        CurrPos:=CurrPos+CurrPosS+Length(PrivateWord[i])-1;
        S:=Copy(S,CurrPosS+Length(PrivateWord[i]),Length(S));
      end;
    until (CurrPosS=0)or(S='');
  end;
  RichEdit1.SelStart:=P;
  RichEdit1.SelLength:=0;
end;
 
procedure TFormMain.LoadWordFromFile(FileName:string);
var
  F:TExtFile;
begin
  CountPrivateWord:=0;
  AssignFile(F,FileName);
  Reset(F);
  while not EOF(F) do begin
    ReadLn(F,PrivateWord[CountPrivateWord]);
    CountPrivateWord:=CountPrivateWord+1;
  end;
  CloseFile(F);
end;
 
Категория: Задачи по программированию | Добавил: shypuk (04.02.2014)
Просмотров: 498 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]