Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2013, 23:12   #1
piligrim24
Новичок
Джуниор
 
Регистрация: 21.11.2013
Сообщений: 1
По умолчанию Texteditor. Вывод исправленного правильного текста из неправильного (Delphi 7)

Сделать чтобы из выбираемого входного файла *.txt (например: Миша,, Саша..;;;; рома?? ?!!! вася):
1) При нажатии на кнопку 1 в TLabel1 вывел итог преобразования текста, то есть убрал все лишние пробелы; знаки препинания, так, что первый знак после каждого слова остался, а остальные удалились, если первый знак после слова ","; ";"; ":" то последующее слово с маленькой буквы, если первый знак после слова "."; "?"; "!" то последующее слово с заглавной буквы.
2) При каждом нажатии на кнопку 2 в TLabel2 выводилось каждое действие с текстом, то есть по действиям убрал все лишние пробелы; знаки препинания, так, что первый знак после каждого слова остался, а остальные удалились, если первый знак после слова ","; ";"; ":" то последующее слово с маленькой буквы, если первый знак после слова "."; "?"; "!" то последующее слово с заглавной буквы.

Есть похожая прога в паскале, но здесь текст из одного документа выводится (преобразованный) в другой документ

Код:
Uses
  crt;

Const
  SignSLength = 6;

Var
  SignS: array[0..SignSLength-1] of char = (' ',',','.',';','!','?');
  MainString: String;
  CopyString: String;
  inputfile,outputfile:text;
  bd:boolean;

Procedure ClrNRead;
  begin
    ClrScr;
    assign(inputfile,'input.txt');
    assign(outputfile,'output.txt');
    rewrite(outputfile);
    reset(inputfile);
    Writeln('All ok...');
  end; {ClrNRead}

Function LocalFNK(S1:String;C1,C2:Char):String;
  var
    i:Integer;

  begin
    Repeat
      i:=Pos(C2+C1,S1);
      if i<>0 then
        Delete(S1,i+1,1);
    Until i=0;
    LocalFNK:=S1;
  end;

Function FindNKill(String1:String):String;
  Var
    i,j,v:Byte;

  begin
    for v:=0 to 3 do
      for i:=0 to SignSLength-1 do
        for j:=0 to SignSLength-1 do
          String1:=LocalFNK(String1,SignS[i],SignS[j]);
    FindNKill:=String1;
  end; {FindNKill}

Function LocalPS(S1:String;C1:Char):String;
  var
    i:Integer;
    S2:String;

  begin
    S2:=' ';
    for i:=1 to length(S1) do
      begin
        if (S1[i] = C1)and(S1[i+1]<>' ') then
        insert(S2,S1,i+1);
      end;
    LocalPS:=S1;
  end;

Function PastSigns(S1:String):String;
  var
    i:byte;

  begin
    for i:=1 to SignSLength-1 do
      S1:=LocalPS(S1,SignS[i]);
    PastSigns:=S1;
  end;

Function PastUP(S1:String):String;
  var
    i:byte;

  begin
    for i:=1 to Length(S1) do
      if S1[i] = '.' then
        S1[i+2]:= UpCase(S1[i+2]);
    PastUP:=S1;
  end;

function STFU(s:String):string;
  var
    i,j:byte;
    l:boolean;

  begin
    for i:=1 to length(s) do
      begin
        if not l then
          begin
            for j:=0 to SignSLength-1 do
              if s[i] <> SignS[j] then l:=true else l:=false;
          end
          else
          begin
            delete(s,1,i);
            break;
          end;
      end;
    if not bd then begin s[1]:=UpCase(s[1]);bd:=true end;
    STFU:=s;
  end;

Begin
  ClrNRead;
  while not eof(inputfile) do
    begin
      Readln(inputfile,CopyString);
      CopyString:=FindNKill(CopyString);
      CopyString:=PastSigns(CopyString);
      CopyString:=PastUP(CopyString);
      CopyString:=STFU(CopyString);
      Write(outputfile,CopyString);
    end;
  Writeln('END! PRESS ANY KEY');
  close(inputfile);
  close(outputfile);
  repeat until keypressed;
End.
piligrim24 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TextEditor(C++ и Qt SDK) ser70 Qt и кроссплатформенное программирование С/С++ 12 17.10.2013 11:49
Вывод большого объема текста в Delphi NowLast Общие вопросы Delphi 2 29.12.2011 13:11
Вывод текста в несколько колонок (Delphi 7) Gonzo Компоненты Delphi 8 02.06.2011 15:01
вывод сложного текста в delphi akrandval Помощь студентам 1 05.06.2010 23:38
Построение правильного алгоритма, вывод данных в файл, freggat Общие вопросы C/C++ 1 11.01.2010 21:33