Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

Текст   Найти похожие ветки 

 
mrAndersen ©   (2006-03-06 22:19) [0]

Буду краток. Есть текстовый файл, в котором есть текст. Нужно удалить
символ который стоит после символа 5 но при этом, эти действия нужно производить только с текстом в скобках.

Пример программы(программа рабочая):
procedure TForm1.Button1Click(Sender: TObject);
var
 F1,F2: TextFile;
 a: String;
 k,i,j1,j2:integer;
begin
  AssignFile(F1,"D:\old\Delphi5_s\ses1.txt");
  AssignFile(F2,"D:\old\Delphi5_s\ses2.txt");
  reset(F1);
  rewrite(F2);
begin
 While Not EOF(F1) do begin
 If Not EOLN(F1) then begin
     Readln(F1,a);
     k:=length(a);

     j1:=pos( "(" ,a);  
      j2:=pos( ")" ,a);

     for i:=j1 to j2 do

   if a[i]="5" then  Delete(a,i+1,1);
   Write(F2,a);

end;
end;
end;
CloseFile(F1);
CloseFile(F2);
end.

Есть текстовый файл - ses1.txt, в котором есть такой текст:
кактус11(156111)1561бус1(1561осень11)15611...

при компиляции выходит:
ses2.txt - текстовый файл с таким текстом:
кактус11(15111)1561бус1(1561осень11)15611...

как Вы уже заметили, есть разница, но главный вопрос состоит в том, ЧТОБЫ ТЕКСТ ИЗМЕНЯЛСЯ У ВСЕХ СКОБКАХ, А НЕ ТОЛЬКО В ПЕРВОЙ.

Буду очень признателен за любые варианты решения этой задачи.


 
Zeqfreed ©   (2006-03-06 23:37) [1]

function SkipCharsAfterFives(const Src : String) : String;
var
 i : Integer;
 bracket : boolean;
begin
 Result := "";
 i := 1;
 bracket := false;

 repeat
  Result := Result + Src[i];
  if (Src[i] = "(") then bracket := true;
  if (Src[i] = ")") then bracket := false;
  if (bracket) and (Src[i] = "5") and (Src[i] <> ")") then Inc(i);

  Inc(i);
 until (i > length(Src));
end;

Простейший вариант. :)


 
Плохиш ©   (2006-03-07 01:41) [2]


> Zeqfreed ©   (06.03.06 23:37) [1]

Мне вот это понравилось (Src[i] = "5") and (Src[i] <> ")") ;-)
В каком-то месте надо или i+1 или i-1 писать, ну и границы проверять.

PS. Может скопируешь ему свой код в весь десяток спамовых веток?


 
mrAndersen ©   (2006-03-07 01:59) [3]

Спасибо тебе Zeqfreed, я очень благодарен тебе за этот программный код


 
evvcom ©   (2006-03-07 08:57) [4]


> при компиляции выходит:
> ses2.txt

Что? Сразу при компиляции уже выходит? :)


 
Leonid Troyanovsky ©   (2006-03-07 09:30) [5]



> Zeqfreed ©   (06.03.06 23:37) [1]

>  bracket : boolean;


Для того, чтобы знать находится ли текущий токен внутри скобок нужно
при появлении ( увеличивать счетчик, а при ) - декрементировать.
Т.е., если счетчик нулевой - токен вне скобок.

--
Regards, LVT.


 
Zeqfreed ©   (2006-03-07 12:53) [6]

[5] Leonid Troyanovsky ©   (07.03.06 09:30)
Да, разумеется, полностью согласен :)
Написал специально «простейший вариант», там даже закрывающей скобки не надо, т.е. не совсем корректно. Что-то уж мне вчера сильно спать хотелось :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.058 c
6-1134218767
Igor_thief
2005-12-10 15:46
2006.03.26
TidTelnet (Indy 10)


15-1141390901
keal
2006-03-03 16:01
2006.03.26
8 марта


2-1140436679
alex111
2006-02-20 14:57
2006.03.26
Как сравнить время


15-1140689075
mrRocky
2006-02-23 13:04
2006.03.26
Ищу обновленную библиотеку типа TICQClient


2-1141845624
Новочеркасский Волк
2006-03-08 22:20
2006.03.26
Подскажиет коды для "вредных" клавиш.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский