Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2009, 19:02   #1
fakir9999
Пользователь
 
Регистрация: 23.04.2008
Сообщений: 13
По умолчанию Richedit и поверка на пробелы

Вот я выделяю текст, окрашиваю по определенному условию выделенное слово. Как из прошлой темы слово из 3 символов, но вдруг я выделяю слово с пробелом, тоже слово из 3 симболов, как мне зделать чтоб он не воспринимал пробел, т.е сделать на него проверку, и окрашивал ето слово с выделенным пробелом. Все осуществляется в делфи в richedit.

Последний раз редактировалось fakir9999; 29.05.2009 в 19:18.
fakir9999 вне форума Ответить с цитированием
Старый 29.05.2009, 19:30   #2
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Код:
var
  Str: String;
begin
  Str := RichEdit1.SelText;
  while Pos(' ', Str) <> 0 do
   Delete(Str, Pos(' ', Str), 1);

Последний раз редактировалось Evgeniy26; 29.05.2009 в 19:34.
Evgeniy26 вне форума Ответить с цитированием
Старый 29.05.2009, 20:05   #3
fakir9999
Пользователь
 
Регистрация: 23.04.2008
Сообщений: 13
По умолчанию

Я вот так пишу

procedure TForm1.Button2Click(Sender: TObject);
var Str: String;
begin
Str := RichEdit1.SelText;
for i:=0 to length(str) do begin
while Pos(' ', Str) <> 0 do
Delete(Str, Pos(' ', Str), 1);
with RichEdit1 do begin
if length(SelText)=3 then begin
SelAttributes.Color:=clred;
end;
end;
end;
end;

по клику мыши выделенное слово равное 3 символам должно окрашиватяс в красный, но если я выделяю его с пробелом оно не выделяется, по совету Evgeniy26 я написал его срочки, кода но всеравно не работает, пробел читается как символ, я пытаюсь сделать чтоб он не читался, как это сделать?
fakir9999 вне форума Ответить с цитированием
Старый 29.05.2009, 20:17   #4
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Код:
  Str := RichEdit1.SelText;
  RichEdit1.SelAttributes.Color:=clBlue;
  if Pos(' ', Str) <> 0 then
  begin
    while Pos(' ', Str) <> 0 do
      Delete(Str, Pos(' ', Str), 1);
    if Length(Str) = 3 then
      RichEdit1.SelAttributes.Color:=clRed;
  end else
    if Length(Str) = 3 then
      RichEdit1.SelAttributes.Color:=clRed;
Так попробуйте.

Последний раз редактировалось Evgeniy26; 29.05.2009 в 20:34.
Evgeniy26 вне форума Ответить с цитированием
Старый 29.05.2009, 20:34   #5
fakir9999
Пользователь
 
Регистрация: 23.04.2008
Сообщений: 13
По умолчанию

Вот так он у меня с выделенным пробелом все таки окрашивает

procedure TForm1.Button2Click(Sender: TObject);
var Str: String;
begin
Str := RichEdit1.SelText;
for i:=0 to length(str) do
begin
if Pos(' ', Str) <> 0 then
begin
Delete(Str, Pos(' ', Str), 1);
if length(str)=3 then
begin
RichEdit1.SelAttributes.Color:=clre d;
end;
end;
end;
end;

Но как к примеру я выделяю несколько слов : кол кол кол , все они равны 3 символам но они не выделяются как мне сделать чтоб они выделялись?
fakir9999 вне форума Ответить с цитированием
Старый 29.05.2009, 20:35   #6
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Проверяйте:
Код:
function ThreeStr(Str: String): Boolean;
var
  Pos, i: Integer;
begin
  if Length(Str) < 3 then
  begin
    Result := False;
    exit;
  end;
  Result := True;
  Pos := 1;
  i := 0;
  while Pos <= Length(Str) do
  begin
    if (Str[Pos] <> ' ') and (i <> 3) then
      Inc(i)
        else
          if (i = 3) and (Str[Pos] = ' ') and (Pos <> Length(Str)) then
            i := 0
              else
                begin
                  Result := False;
                  break;
                end;
    Inc(Pos);
  end;
end;

/////////////////////////////////////////////////////////
  if ThreeStr(RichEdit1.SelText) then
    RichEdit1.SelAttributes.Color:=clRed
      else
        RichEdit1.SelAttributes.Color:=clBlue;

Последний раз редактировалось Evgeniy26; 29.05.2009 в 21:41.
Evgeniy26 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить лишние пробелы [C++] StudeHt Помощь студентам 2 20.05.2009 23:12
Удалить лишние пробелы Иван 883 Паскаль, Turbo Pascal, PascalABC.NET 5 06.04.2009 22:45
убрать пробелы zetrix Microsoft Office Excel 9 10.03.2009 10:03
Где пробелы ?!!! Evgenijj О форуме и сайтах клуба 4 07.03.2009 17:03