Показать сообщение отдельно
  #4  
Старый 19.12.2015, 03:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Дык исходные данные и не должны портиться, бо как лежат в др. файле.
типа так:
Код:
uses Classes;
 
var
  sl : TStringList;
  i : integer;
  s : String;
begin
  sl := TSTringList.Create;
  sl.LoadFromFile('File1.txt');
  s := sl.Text;
  For i := 1 To Length(s) Do
    If s[i] in ['a'..'z'] Then
      s[i] := chr(ord('A') + ord(s[i]) - ord('a'));
  sl.Add('');
  sl.Add('Resultat:');
  al.Add(s);
  sl.SaveTofile('File2.txt');
  sl.Free;
end;

тогда выведет в новый файл содержимое старого + измененные данные.
Ну а если говорить о твоем коде, то, наверное, должно быть как то так:
Код:
var 
  str_in, str_out : string;

function vvodstr : string;
var
  fin : TextFile;
  buf : String;
begin
  AssignFile(fin,'File1.txt');
  Reset(fin);
  readln(fin,buf);
  CloseFile(fin);
  Result := buf;
end;

function zamena(s:string):string;
var
  i : integer;
begin
  Result := s;
  for i:=1 to length(Result) do
    Result[i]:=UpCase(Result[i]);
end;
 
procedure vivodres(str_old, str_new : string); 
var
  I : Integer;
  fout : TextFile;
begin
  AssignFile(fout,'File2.txt');
  Rewrite(fout);
  writeln(fout,'in  out');
  writeln(fout,'--  ---');
  for i:=1 to length(str_old) do
    writeln(fout,str_old[i]+'   '+str_new[i]);
  CloseFile(fout);
end;

begin
  str_in := vvodstr;
  str_out := zamena(str_in);
  vivodres(str_in,str_out);
end.
Ответить с цитированием