Главная страница
    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.048 c
8-1129663830
Tasha
2005-10-18 23:30
2006.03.26
Преобразование изображения


15-1141648808
Volf_555
2006-03-06 15:40
2006.03.26
Какие есть сайты для закачки фильмов по HTTP?!


2-1142065880
AlexeyT
2006-03-11 11:31
2006.03.26
Число отображаемых строк в TMemo


15-1141191738
Ega23
2006-03-01 08:42
2006.03.26
С Днём рождения! 1 марта


1-1140798177
аноним
2006-02-24 19:22
2006.03.26
Помогите разобраться с AV





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский