Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в RichEdit взять символ из определенной строки? / 8 сообщений из 8, страница 1 из 1
12.07.2021, 18:16
    #40083425
VladSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
Здравствуйте.
Подскажите, как мне взять посимвольно определенную строку в окне RichEdit? Это для поиска слов выделенных жирным, курсивом и пр.
Я делаю так, как в коде ниже, и первая строка берется нормально, а вот с последующими проблема. При переходе на вторую строку символы берутся из первой. Я не знаю, как указать RichEdit1.SelStart для второй и последующих строк.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
for i:=0 to RichEdit1.Lines.Count-1 do              //Искать по всем строкам всего текста
 begin
 
 for ii:=1 to Length(RichEdit1.Lines.Strings[i]) do  //Искать по всем символам в текущей строке
  begin
   RichEdit1.SelStart:=ii;                                                    
   S1:=RichEdit1.Text[ii];                          //Текущий символ
 
   if RichEdit1.SelAttributes.Style=[fsBold] then   //Если найден жирный шрифт
   begin
    S2:=S2+RichEdit1.Text[ii];
   end;
 
   if RichEdit1.SelAttributes.Style=[fsItalic] then //Если найден курсив
   begin
    S3:=S3+RichEdit1.Text[ii];
   end;
 
  end;
 
 end;
...
Рейтинг: 0 / 0
12.07.2021, 18:24
    #40083429
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
GetCharIndex()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.07.2021, 19:05
    #40083436
VladSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
В смысле RichEdit1.SelStart:=ii; заменить на RichEdit1.GetCharPos(ii);?
Не работает так.
...
Рейтинг: 0 / 0
13.07.2021, 07:14
    #40083488
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
VladSQL,

Так вы же каждый раз начинаете с 1-го символа:
Код: pascal
1.
2.
3.
 for ii:=1 to ...
  begin
   RichEdit1.SelStart:=ii;


Добавляйте кол-во символов со всех уже пройденных ранее строк
...
Рейтинг: 0 / 0
13.07.2021, 11:39
    #40083533
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
12.07.2021 19:05, VladSQL пишет:
> В смысле RichEdit1.SelStart:=ii; заменить на RichEdit1.GetCharPos(ii);?
> Не работает так.

пинзец.
полный.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.07.2021, 12:32
    #40083548
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
VladSQL,

зачем вам 2 цикла?
пробегитесь просто по символам с первого по последний
а переводы строки это тоже символы

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
procedure TForm1.btnTestClick(Sender: TObject);
var
   iLen           : integer;
   i              : integer;
   cChar          : char;
   iCharCode      : integer;
   CharFontStyle  : TFontStyles;
   sSymInfo       : string;
begin
   edOutput.Lines.Clear();

   iLen := Length(edRichEdit.Text);

   for i:=0 to iLen-1 do
   begin
      edRichEdit.SelStart := i;
      edRichEdit.SelLength := 1;

      //здесь именно edRichEdit.Text[i+1], а не edRichEdit.SelText, т.к. у меня для символов переводов строки SelText возвращает char(0)
      cChar := edRichEdit.Text[i+1]; 
      CharFontStyle := edRichEdit.SelAttributes.Style;

      iCharCode := Ord(cChar);

      if iCharCode <= 32 then
         sSymInfo := 'char('+IntToStr(iCharCode)+')'
      else
         sSymInfo := cChar;

      if fsBold in CharFontStyle then sSymInfo := sSymInfo + '    [BOLD]';
      if fsItalic in CharFontStyle then sSymInfo := sSymInfo + '    [ITALIC]';

      edOutput.Lines.Add(sSymInfo);
   end; //for i
end;
...
Рейтинг: 0 / 0
13.07.2021, 12:40
    #40083551
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
...
Рейтинг: 0 / 0
13.07.2021, 17:17
    #40083613
VladSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в RichEdit взять символ из определенной строки?
Кроик Семён , спасибо большое, попробую.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в RichEdit взять символ из определенной строки? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]