powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в RichEdit взять символ из определенной строки?
8 сообщений из 8, страница 1 из 1
Как в RichEdit взять символ из определенной строки?
    #40083425
VladSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите, как мне взять посимвольно определенную строку в окне 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
Как в RichEdit взять символ из определенной строки?
    #40083429
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GetCharIndex()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в RichEdit взять символ из определенной строки?
    #40083436
VladSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В смысле RichEdit1.SelStart:=ii; заменить на RichEdit1.GetCharPos(ii);?
Не работает так.
...
Рейтинг: 0 / 0
Как в RichEdit взять символ из определенной строки?
    #40083488
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladSQL,

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


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

пинзец.
полный.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в RichEdit взять символ из определенной строки?
    #40083548
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как в RichEdit взять символ из определенной строки?
    #40083551
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как в RichEdit взять символ из определенной строки?
    #40083613
VladSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семён , спасибо большое, попробую.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как в RichEdit взять символ из определенной строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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