Главная страница
    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.045 c
4-1136740034
Microsom
2006-01-08 20:07
2006.03.26
Delphi &amp; ADSI (ActiveDirectory)


2-1142246826
Handle
2006-03-13 13:47
2006.03.26
Цвет пикселя под курсором


9-1127015559
bulanov
2005-09-18 07:52
2006.03.26
Завершение загрузки текстур (GLScene)


2-1141905978
Alex_Th
2006-03-09 15:06
2006.03.26
Размещение GIF-файла на форме


2-1142267233
Fenix
2006-03-13 19:27
2006.03.26
Динамическое заполнение ListView





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