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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 18:41   #1
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию Нужно отобразить количество символов до определённого символа

Добрый день. Вообщем, я новичёк. Прошу помощи.

Допустим есть текст:

Код:
[58]
0=030C0047011F0443043F043A0438043D04080046021204300441044F0409000B0300000B895364728A70
1=03100047011F0435044204400435043D043A043E040A004602140438043C043A04300408000B0300000A8495333269
Нужно посчитать в нём количество знаком равно(=) до знака '[' или до конца текста.
Вот пробовал проверять количество до конца текста:

Код:
procedure TFormMain.ButtonCheckBookClick(Sender: TObject);
var

PM: TStringList;
  i,k,n:integer;
  s: string;

  begin
  PM := TStringList.Create;
PM.LoadFromFile(OpenDialog1.FileName);
    for i := 0 to PM.Count-1 do
    begin
      if not (PM[0]='[58]') then
        PM.Delete(0)
      else
        Break;
        end;
        begin


k:=0;
for i:=0 to pm.count-1 do
begin
  for n:=0 to length(pm.text[i]) do
  begin
  s:=copy(pm.text[i], k, 1);
    if s='=' then
    inc(k);
  end;
begin
  FormMain.Memo1.Lines.Add (s);
  end;
  end;
  end;
  end;
  end.
Ничего не получается((( Спасибо заранее за ответы.
Dimidrolus вне форума Ответить с цитированием
Старый 26.06.2011, 18:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  
for n:=0 to length(pm.text[i]) do  begin
    if pm[i][n]='=' then   inc(k);
    if pm[i][n]='[' then break;
  end;
Такая считалочка сойдет?
Или если нужно не построчно а посимвольно по всему тексту то первый цикл убери
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.06.2011, 19:04   #3
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Просто до [58] Могут быть (точней они есть) ещё знаки равенства. Мне нужны именно после [58] и до следующей дужки или до конца текста)
Dimidrolus вне форума Ответить с цитированием
Старый 26.06.2011, 19:19   #4
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Код:
procedure TFormMain.ButtonCheckBookClick(Sender: TObject);
var

PM: TStringList;
  i,k,n:integer;
  s: string;

  begin
  PM := TStringList.Create;
PM.LoadFromFile(OpenDialog1.FileName);
    for i := 0 to PM.Count-1 do
    begin
      if not (PM[0]='[58]') then
        PM.Delete(0)
      else
        Break;
        end;
     
begin
k:=0;



 for n:=0 to length(pm.text[i]) do  begin
    if pm[i][n]='=' then   inc(k);
    if pm[i][n]='[' then break;
  end;


begin
 
  FormMain.Memo1.Lines.Add (inttostr(k)+' Contacts found');
  end;
  end;
  end;
  end;
  end.
Всё равно не работает( Находит ноль знаков(

Последний раз редактировалось Dimidrolus; 26.06.2011 в 19:26.
Dimidrolus вне форума Ответить с цитированием
Старый 26.06.2011, 19:24   #5
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

если после [58] то поставь флаг fl:boolean, если найдёшь символ ']' то его ставь true.
k:=0;
for i:=0 to pm.count-1 do
begin
for n:=0 to length(pm.text[i]) do
begin
s:=copy(pm.text[i], k, 1);
if s='=' then
inc(k);
end;

это вообще мясо какое то. Пиши так

for i:=0 to pm.count-1 do
begin
for n:=0 to length(pm.text[i]) do
begin
if (pm[i][n]=']') then fl:=true;
if (pm[i][n]='=') and (fl) then inc(k);
end;

Последний раз редактировалось DoubleTrouble; 26.06.2011 в 19:27.
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 19:28   #6
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Извините за наглость, кто то может написать полностью рабочий код для моего случая, что б я разобрался?) Просто мне пока что немного трудно разбиратся с кусками кода) Спасибо.

Последний раз редактировалось Dimidrolus; 26.06.2011 в 19:32.
Dimidrolus вне форума Ответить с цитированием
Старый 26.06.2011, 19:41   #7
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

Код:
procedure TFormMain.ButtonCheckBookClick(Sender: TObject);
var

PM: TStringList;
  i,k,n:integer;
  s: string;

  begin
  PM := TStringList.Create;
PM.LoadFromFile(OpenDialog1.FileName);
    for i := 0 to PM.Count-1 do
    begin
      if not (PM[0]='[58]') then
        PM.Delete(0)
      else
        Break;
        end;
     
begin
k:=0;

for i:=0 to pm.count-1 do
 begin
 for n:=0 to length(pm.text[i]) do
 begin
 if (pm[i][n]=']') then fl:=true;
 if (pm[i][n]='=') and (fl) then inc(k);
 end;


begin
 
  FormMain.Memo1.Lines.Add (inttostr(k)+' Contacts found');
  end;
  end;
  end;
  end;
  end.
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 19:45   #8
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Перекопировал твой текст программы к себе, добавил в var fl:boolean;
Всё равно не работает(( Вот результат:
Код:
0 Contacts found
0 Contacts found
0 Contacts found
Вот текст по которому ищёт:
Код:
[58]
0=020600470141006200630009000B0300000CF79A37A11111
1=020600470144006500660009000B0300000CF79A35555555
Dimidrolus вне форума Ответить с цитированием
Старый 26.06.2011, 20:00   #9
DoubleTrouble
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 32
По умолчанию

а в какой файле лежит текст? расширение то есть
DoubleTrouble вне форума Ответить с цитированием
Старый 26.06.2011, 20:01   #10
Dimidrolus
Дима)
Пользователь
 
Аватар для Dimidrolus
 
Регистрация: 05.06.2010
Сообщений: 30
По умолчанию

Расширение .pm
Вот пример файлика.
Вложения
Тип файла: rar PM.rar (28.4 Кб, 7 просмотров)

Последний раз редактировалось Dimidrolus; 26.06.2011 в 20:09.
Dimidrolus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что делать, если количество символов в билдере не соответствует количеству символов в билде? BoT_T Общие вопросы Delphi 0 16.11.2010 10:42
TStringList Замена символа на ряд символов. Alex Cones Общие вопросы Delphi 17 23.03.2010 20:00
Как сощитать и отобразить в ячейке количество страниц в листе gleod Microsoft Office Excel 2 02.08.2009 20:37
Как можно замерить и отобразить количество fps CraZZy RabbIt Общие вопросы Delphi 0 12.03.2009 21:05
количество цифр и количество символов до первой гласной буквы 111111 Общие вопросы C/C++ 2 22.12.2008 12:15