Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2015, 23:40
trangle trangle вне форума
Прохожий
 
Регистрация: 18.12.2015
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
Восклицание Смена регистра

пожалуйста,кто разбирается в процедурах и функциях,помогите доделать программу,которая заменяет строчные латинские буквы на прописные.

нужно сделать так,чтобы не портились исходные данные и выводились исходные данные и результат в файл. с вводом из файла вроде получилось
ввод,вывод и обработку осуществлять в процедурах и функциях
вот что сделал:
Код:
var st,s:string;
procedure vvodstr(var st:string); 
  fin:TextFile;
begin
  AssignFile(fin,'File1.txt');
  Reset(fin);
  readln(fin,st);
  CloseFile(fin);
end;
function zamena(st:string):integer;
var
 s:string;
 i: byte;
begin
 for i:=1 to length(st) do
  s[i]:=UpCase(st[i]);
end;

procedure vivodres(s:string); 
var
  i: byte;
  fout:TextFile;
begin
  AssignFile(fout,'File2.txt');
  Rewrite(fout);
  for i:=1 to length(st) do
  writeln(fout,'Rezultat: ',s[i]);
  CloseFile(fout);
end;
begin
 vvodstr(st);
 zamena(st);
 vivodres(s);
end.

Последний раз редактировалось trangle, 18.12.2015 в 23:46.
Ответить с цитированием
  #2  
Старый 19.12.2015, 01:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,056
Версия 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.Text := s;
  sl.SaveTofile('File2.txt');
  sl.Free;
end;

А то у тебя вообще какая-то ересь написана, полная путаница в именах параметров и переменных, отсутсвует функция UpCase, использованная в коде и т.д.
Ответить с цитированием
  #3  
Старый 19.12.2015, 02:27
trangle trangle вне форума
Прохожий
 
Регистрация: 18.12.2015
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А то у тебя вообще какая-то ересь написана, полная путаница в именах параметров и переменных, отсутсвует функция UpCase, использованная в коде и т.д.

Моя программа работает правильно. Я не очень хорошо знаю процедуры и функции. а с тем,чего я просил,вы мне не помогли
Ответить с цитированием
  #4  
Старый 19.12.2015, 03:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,056
Версия 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.
Ответить с цитированием
  #5  
Старый 21.12.2015, 13:57
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

AnsiUpperCase нельзя что ли использовать?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter