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

  • Автор темы Kavlar
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Kavlar

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

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

объявить переменные:
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.

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

root

Гость
#2
Для: 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
 
R

root

Гость
#4
Для: Kavlar
+ в репутацию вместо флуда :blink:
 
Статус
Закрыто для дальнейших ответов.