![]() |
|
#1
|
|||
|
|||
![]() Привет. Мне необходимо было написать программу, считывающую посимвольно информацию из текстового файла, позволяющую отредактировать считанный текст и сохранить файл на диске. Вторая часть задания заключалось в том, что бы в тексте найти самое длинное слово. Я это всё сделал , но теперь мне необходимо заменить вторую часть задания ( самое длинное слово) на то, что бы после кждого слова в тексте ставилась запятая. А я такого примера найти не смог. Потому и прошу помощи.
Код:
procedure TForm1.N1Click(Sender: TObject); var f: textfile; w: integer; c: char; begin If OpenDialog1.Execute then begin Label1.Visible := false; Memo1.Clear; AssignFile(F,OpenDialog1.FileName); {$I-} reset(F); {$I+} If IOResult = 0 then begin Form1.Caption := OpenDialog1.FileName; W := 0; If CheckBox1.Checked then begin while Not EOF(F) do begin Memo1.Lines.Add(''); While Not EOLn(F) do begin read(F,C); Memo1.Lines[W]:=Memo1.Lines[W]+C; end; Inc(W); //Увеличить счетчик строк readln(F); {Перейти к считыванию новой строки} end; end else //Файл считывается сразу begin Memo1.Lines.LoadFromFile(OpenDialog1.FileName); {Считать файл} end; CloseFile(F); //Закрыть файл Label1.Caption := 'Текс изменен'; end else //Файл не открыть ShowMessage('Ошибка открытия файла '+OpenDialog1.FileName); {Выдать сообщение об ошибке} end; //Конец работы с файлом end; procedure TForm1.N2Click(Sender: TObject); var f: textfile; res:integer; begin If SaveDialog1.Execute then begin AssignFile(F,SaveDialog1.FileName); {$I-} reset(F); res := IOResult; {$I+} If (res <> 0) or ((res = 0) and (MessageDlg('Файл уже существует. Перезаписать?', mtWarning, [mbYes, mbCancel], -1) = mrYes)) then begin if (res = 0) then CloseFile(F); Memo1.Lines.SaveToFile(SaveDialog1.FileName); Form1.Caption := SaveDialog1.FileName; Label1.Visible := false; end; end; end; procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); begin Label1.Visible := true; end; procedure TForm1.FormCreate(Sender: TObject); begin Label1.Visible := false; end; procedure TForm1.Button1Click(Sender: TObject); var i, j: integer; w, lw: string; begin lw := ''; for i:=0 to Memo1.Lines.Count-1 do begin j := 1; w := ''; while j <= length(Memo1.Lines[i]) do begin if Memo1.Lines[i][j] = ' ' then begin if (length(w) > length(lw)) then lw := w; w := ''; end else w := w + Memo1.Lines[i][j]; inc(j); end; if (length(w) > length(lw)) then lw := w; end; ShowMessage('Самое длинное слово длиной '+inttostr(length(lw))+'символов: '+lw); end; end. |