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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2009, 18:59   #1
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию Как найти количество n-ого символа в строке?

Есть строка. Мне надо узнать сколько раз в этой строке встречается заданный ранее символ. Думал с помощью pos, но он ищет только до первого встретившегося символа.
zver777 вне форума Ответить с цитированием
Старый 25.08.2009, 19:03   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Просматривайте строку в цикле:
В Edit1 строка; В Edit2 символ.
Код:
procedure TForm1.bt_3Click(Sender: TObject);
var
 i, n: integer;
begin
 n := 0;
 for i := 1 to Length(Edit1.Text) do
  if Edit1.Text[i] = Edit2.Text[1] then
   inc(n);

 ShowMessage(Format('Символ встречается %d раз', [n]));
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 25.08.2009 в 19:30.
Neeter вне форума Ответить с цитированием
Старый 25.08.2009, 19:24   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Поправочка:
Код:
for i := 1 to Length(Edit1.Text) do
TwiX вне форума Ответить с цитированием
Старый 25.08.2009, 19:25   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

А что я не так написал? вроде тоже самое вы и написали...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 25.08.2009, 19:27   #5
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

У вас написанно: Length(Edit1.Text) - 1

Зачем -1?
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 25.08.2009, 19:28   #6
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

То же самое в виде функции и без -1 после Length(Edit1.Text):
Код:
function find_symbols_in_str(const sorse_str: string; const find_char: char) : integer;
var i: integer;
begin
  result:=0;
  for i := 1 to Length(sorse_str) do
  if sorse_str[i] = find_char then
    inc(result);
end;
...
caption := inttostr(find_symbols_in_str(Edit1.Text, Edit2.text[1]));
...
Gorychev вне форума Ответить с цитированием
Старый 25.08.2009, 19:30   #7
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

ААА, теперь заметил, ну -1 по привычке)
С единицы начал ведь, а дальше забыл)

Исправил.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 25.08.2009, 20:25   #8
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Вавел из ГМТУ, Gorychev, зачем повторять уже написанное?)
Neeter, delphi 2009? Тож иногда забываю про -1)
TwiX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и удаление символа в строке Karl_Karlovi4 Общие вопросы Delphi 14 26.10.2011 18:04
Номер символа в строке Veroonya SQL, базы данных 4 24.08.2009 15:04
как в строке вставить n-ое количество пробелов Marinka91 Паскаль, Turbo Pascal, PascalABC.NET 18 14.08.2009 13:33
поиск в строке символа IvanM Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.06.2009 22:27
Удаление символа в строке Fantom Общие вопросы Delphi 2 23.06.2008 16:03