1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Обработка символьных данных

Тема в разделе "Delphi - программирование", создана пользователем Kavlar, 7 дек 2007.

Статус темы:
Закрыта.
  1. Kavlar

    Kavlar Гость

    Репутация:
    0
    Всем привет)
    Парни, очень нужен ваш совет.
    Пишу программку - загрузить ОпенДалогом в РичЕдит (РидОнли = тру) текст, далее нужно найти в тексте файла фразу или слово ограниченное скобками
    (слово или фраза),
    удалить ее вместе со скобками и СэйвДиалогом сохранить новый файл. Раньше никогда не сталкивался с поиском символов в строках.

    Загрузку/сохранение файла реализовал. Дальше небольшая проблемка с этими скобками и словом/фразой.
    Значит, какие у меня мысли:

    объявить переменные:
    pozicia:=0; //сколько букв всего
    poziciask:=0; //с какой позиции скобка открывается (
    poziciask2:=0; //на какой позиции скобка закрывается )

    проанализировать текст, потом вычесть из poziciask2 переменную poziciask и удалить полученное количество символов начиная с того момента, когда скобка открывается.
    Никак не могу реализовать условие(( Плюс подскажите, какой функцией можно реализовать удаление символов.

    Вот что я вымучал


    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    
    pozicia:=0; 
    poziciask:=0; 
    poziciask2:=0; 
    
    //проверяем строки
    for i:=0 to richedit1.lines.count-1 do
    begin
    //вложенным циклом проверяем символы в строках
    for j:=0 to length(richedit1.lines.strings[i])-1 do
    begin
    
    // если скобка открывается, то poziciask + 1;
    if richedit1.lines.strings[i] = '(' then
    begin
    poziciask:= poziciask+1;
    end
    
    // если есть скобка не открывается, то pozicia + 1;
    else
    begin
    pozicia:= pozicia+1;
    end;
    end;
    end;
    end;
    Label1.Caption:= 'скобка начинается с позиции ' + FloatToStr(poziciask);
    Label2.Caption:= 'всего букв ' + FloatToStr(pozicia);
    end.

    если лень код писать, хотя бы словами подскажите алгоритм. Под вечер уже башка не варит совсем((
     
  2. root

    root Гость

    Репутация:
    0
    Для: Kavlar
    Код:
    RichEdit1.FindText() 
    что то на подобе 
    var
    Pos1,Pos2: integer;
    begin
    Pos1:=RichEdit1.FindText('(',0,length(RichEdit1.text ),[stMatchCase]);
    Pos2:=RichEdit1.FindText(')',0,length(RichEdit1.text ),[stMatchCase]);
    RichEdit1.SetFocus;
    RichEdit1.SelStart := Pos1;
    RichEdit1.SelLength := (pos2-pos1)+1;
    +F1
     
  3. Kavlar

    Kavlar Гость

    Репутация:
    0
    спасибо, буду пробовать
     
  4. root

    root Гость

    Репутация:
    0
    Для: Kavlar
    + в репутацию вместо флуда :blink:
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей