Привет. Мне необходимо было написать программу, считывающую посимвольно информацию из текстового файла, позволяющую отредактировать считанный текст и сохранить файл на диске. Вторая часть задания заключалось в том, что бы в тексте найти самое длинное слово. Я это всё сделал , но теперь мне необходимо заменить вторую часть задания ( самое длинное слово) на то, что бы после кждого слова в тексте ставилась запятая. А я такого примера найти не смог. Потому и прошу помощи.
Код:
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.