0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 8

Как найти букву а (Кириллица)

08.06.2021, 14:20. Показов 1781. Ответов 13

Студворк — интернет-сервис помощи студентам
Не могу понять где тут ошибка, программа работает, но цвет shape не меняет, подскажите пожалуйста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
 c:=0;
ListBox1.Items.LoadFromFile('123.txt');
for i:=0 to listbox1.Items.Count-1 do //считает строки
   begin
     c:=c+1;
     str1:=ListBox1.Items[i];
      for j:=1 to UTF8length(str1) do
       begin
        if UTF8copy(str1, j, 1)='a' then
        Tshape(components[c]).Brush.Color:=clblue;
        end;
   end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2021, 14:20
Ответы с готовыми решениями:

Как вывести букву из строки (кириллица)
Приветствую! Скрипт находится в utf-8 кодировке, поэтому при выводе буквы из строки методом: $str = "строка" exit...

Как найти в строчке слово, которое начинается на букву "Р" и заканчивается на букву "А"?
Условие к программе: она должна быть с процедурой.

Подсчитать количество вхождений буквы (кириллица) в строку (кириллица)
Суть такая: по требованию программы ввести строку символов (обыкновенный текст, кириллица(!!!)) и посчитать количество вхождений, если...

13
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
08.06.2021, 15:47
так у Вас в строке 9 латинская буква a.
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
08.06.2021, 15:51
А чо, функцию pos() запретили? С каких пор?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
08.06.2021, 15:53
Цитата Сообщение от Verevkin Посмотреть сообщение
функцию pos()
точнее UTF8pos()
0
0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 8
08.06.2021, 15:57  [ТС]
Puporev, Да, я поменял, но теперь приложение дает ошибку, вот она:
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
08.06.2021, 16:07
Цитата Сообщение от Puporev Посмотреть сообщение
точнее UTF8pos()
не факт, что тут она нужна.
если уж и пейсать софт в лазарусе, куды лучше юзать сразу unicodestring, для которой, я уверен, есть нужный overload функции pos().

Ещо рискну предположить, щито есть директива компайлера, которая делает string эквивалентным unicodestring глобально.

Добавлено через 2 минуты
Цитата Сообщение от neiku Посмотреть сообщение
Да, я поменял, но теперь приложение дает ошибку
Вывали весь проект сюда, так быстрее.
0
0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 8
08.06.2021, 16:09  [ТС]
Verevkin, так?
Pascal
1
2
3
4
5
6
7
8
9
c:=0;
ListBox1.Items.LoadFromFile('123.txt');
for i:=0 to listbox1.Items.Count-1 do //считает строки
   begin
     c:=c+1;
     str1:=ListBox1.Items[i];
     if pos('a',str1)>0 then
     Tshape(components[c]).Brush.Color:=clblue;
   end;
Все равно не перекрашивает в синий цвет
0
0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 8
08.06.2021, 16:13  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Вывали весь проект сюда, так быстрее.
123.rar
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
08.06.2021, 16:15
Цитата Сообщение от neiku Посмотреть сообщение
Tshape(components[c])
Кроме TShape на форме ещо есть компоненты (в том числе невизуальные)?
0
0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 8
08.06.2021, 16:18  [ТС]
Verevkin, Эдиты, листбокс, сама кнопка, и таймер
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
08.06.2021, 16:19
UTF8Pos теперь не нужна, Pos - тоже. Есть в хелпере для строки метод Contains, который прекрасно определяет присутствие подстроки в строке. Ну, и ходить по ListBox-у через индекс - не нужно. Давно есть перебор содержимого. В общем, если есть уверенность, что Components[i] действительно указывают на нужные Shape-ы - то:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  s : string;
  cn : Integer;
begin
  cn := -1;
  for s in ListBox1.Items do
  begin
    Inc(cn);
    if s.Contains('а') then TShape(Components[cn]).Brush.Color := clBlue; // Все прекрасно работает
  end;
end;
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
08.06.2021, 16:24
Лучший ответ Сообщение было отмечено neiku как решение

Решение

Цитата Сообщение от neiku Посмотреть сообщение
Эдиты, листбокс, сама кнопка, и таймер
Ну так тогда какого МПХ components[c] тут делает?

Видео посмотри.

Delphi
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
36
37
38
39
40
procedure TForm1.Button1Click(Sender: TObject);
var
  cmp: TComponent;
  sh: TShape absolute cmp;
begin
  c := 0;
  ListBox1.Items.LoadFromFile('123.txt');
  for i := 0 to listbox1.Items.Count - 1 do //считает строки
    begin
      c := c + 1;
      {str1 := ListBox1.Items[i];
      for j := 1 to UTF8length(str1) do
      begin
        if UTF8copy(str1, j, 1) = 'а' then
          Tshape(Components[c]).Brush.Color := clblue;
      end; }
      if pos('а', ListBox1.Items[i]) <> 0
        then begin
               cmp:= FindComponent(Format('Shape%d', [c]));
               if cmp is TShape
                 then sh.Brush.Color := clblue;
             end ;    // никогда так не делай! Это говнокод. Лютый! :))))))
    end;
 
  //проверяем 5 ли слов
  if c <> 5 then
    ShowMessage('Неверное количество слов')
  else
  begin
    //выводим раздельные слова в Edit(1-5)
    Edit1.Text := ListBox1.Items[0];
    Edit2.Text := ListBox1.Items[1];
    Edit3.Text := ListBox1.Items[2];
    Edit4.Text := ListBox1.Items[3];
    Edit5.Text := ListBox1.Items[4];
    Timer1.Enabled := True;
    Timer1.interval := 120;
    m := 0;
  end;
end;
1
0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 8
08.06.2021, 16:44  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
никогда так не делай! Это говнокод. Лютый! )))))
я понимаю что это говно код), но так как сделали вы, мы еще не изучали, я частично понимаю что вы сделали, но есть ли способ написать по говно коду?
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
08.06.2021, 17:09
Цитата Сообщение от neiku Посмотреть сообщение
я понимаю что это говно код), но так как сделали вы, мы еще не изучали
Как я сделал - тоже говнокод.
Подход неверный. Не делай так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2021, 17:09
Помогаю со студенческими работами здесь

Найти в строке любое слово, которое начинается на букву а и заканчивается на букву а
Помогите: Дано рядок S. Найти любое слово которое начинаться на букву а и заканчивается на букву а. Если таких слов нет, то...

В заданном списке фамилий найти фамилии, начинающиеся на букву «к» и оканчивающиеся на букву «а»
В заданном списке фамилий найти фамилии, начинающиеся на букву «к» и оканчивающиеся на букву «а».

Grep’ом найти строки, начинающиеся на букву s и заканчивающиеся на букву r
grep \b\w*\b вообще эта команда должна выводить, но чет как-то не выводит Добавлено через 25 минут Разобрался

Как найти букву столбца? Или как удалить числа из ячейки?
Доброго дня! Помогите справиться с задачей В столбце А приводятся заголовки столбцов, расположенных на листе Данные В столбец B...

Как найти последнюю букву в слове?
Как?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru