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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2013, 01:52   #1
gudok2
Пользователь
 
Регистрация: 24.03.2013
Сообщений: 17
По умолчанию Организовать текстовый файл, состоящий из N строк. Заменить в файле все маленькие латинские буквы на большие.

Заранее спасибо
gudok2 вне форума Ответить с цитированием
Старый 18.05.2013, 07:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

С потолка предположу такое:
Код:
const n=1;
var f,e:text; s:string;i:integer;
begin
 assign(f,файл);rewrite(f);
 for i:=1 to n do writeln(f,'qwe');
 assign(e,файл2);reset(f);rewrite(e);
 while not eof(f) do begin readln(f,s); writeln(e,UpCase(s));end;
 close(f);close(e);
 rename(файл,файл1);
end.
Не проверял.
I'm learning to live...

Последний раз редактировалось Stilet; 18.05.2013 в 20:46.
Stilet вне форума Ответить с цитированием
Старый 18.05.2013, 13:02   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

На сколько я помню UpCase употребляется к Char'у. А не к массиву Char'ов..
Так же в условии сказано заменить в файле (подразумевается, наверное, исходный файл)
Poma][a вне форума Ответить с цитированием
Старый 18.05.2013, 19:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
UpCase употребляется к Char'у. А не к массиву Char'ов..
Ну пусть автор слегка в цикл его загонит: for i:=0 to length(s) do s[i]:=UpCase(s[i]);
Говорю же - с потолка писал.
Цитата:
Так же в условии сказано заменить в файле
Чисто философски - создать новый файл, и накрыть поверх старого - тоже замена.
Замена в том же файле (учитывая что он типа Text) ИМХО трудный и тернистый путь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.05.2013, 19:27   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Говорю же - с потолка писал.
Никто Вас ни в чем не упрекает Это я просто так.. Чтобы избежать появления еще одного студента-смертника

Цитата:
Чисто философски - создать новый файл, и накрыть поверх старого - тоже замена.
Тоесть
Код:
Assign (f, 'input.txt'); Reset (f);
Assign (e, 'input.txt'); Rewrite(e);
?

Нам тогда вот что в ответ : File access denied
Или я что-то не понял?


Как вариант загнать в массив строк.. да! не красиво.. да! затратно по памяти.. но зато железно!! (разумеется если Вы не собираетесь открывать файлик из 4 терабайт..)
Poma][a вне форума Ответить с цитированием
Старый 18.05.2013, 20:46   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
загнать в массив строк
Смотря какой паскаль. В старых такое без гемора можно было только с помошью списков сделать. А в новом это вообще делать не нужно - там есть другие способы.
Цитата:
Или я что-то не понял?
Ну посмотри мой пример - я там Считываю в временный файл, который потом переименовываю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.05.2013, 20:49   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
rename(файл,файл1);
Ах вот оно что... Спасибо!
Цитата:
А в новом это вообще делать не нужно - там есть другие способы.
Один уже был представлен в этой теме (переименование), а какие другие, не подскажете?
Poma][a вне форума Ответить с цитированием
Старый 19.05.2013, 09:11   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
не подскажете?
Да легко.
1) Тупо считываем весь файл через BlockRead, и уже UpCase применяем к массиву байт. Файл в этом случае file of char
2)Файл типа text. но считывание происходит в динамический список.
Код:
type
 Titem=record
  s:string;
  next:^Titem
 end;

const n=1;
var f,e:text; s:string;i:integer;
 i,p:TItem;
begin
 assign(f,файл);rewrite(f);
 for i:=1 to n do writeln(f,'qwe');

//Считываем файл в список
 reset(f); 
 new(i);
 i^.next:=nil;
 while not eof(f) do begin 
  p:=i;
  readln(f,i^.s); 
  with i^ do  for i:=0 to length(s) do s[i]:=UpCase(s[i]);
  new(i);
  p^.next:=i;  
  i^.next:=nil;
 end;

// Переписываем список в файл
 rewrite(f);
 while i^next<>nil do begin
  writeln(f,i^.s);
  p:=i;
  i:=i^.next;
  dispose(p);
 end;
 close(f);

end.
Понятное дело что тут могут быть ошибки и не точности, так как и этот код я не проверял. Но идею он отражает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2013, 11:52   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Огроменное спасибо!
Poma][a вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организовать текстовый файл f, состоящий из N строк. Организовать замену символов в файле. "Старый" символ и "новый" символ запраш Richik123 Паскаль, Turbo Pascal, PascalABC.NET 1 14.06.2012 16:28
Организовать текстовый файл f, состоящий из N строк. Организовать замену символов в файле. "Старый" символ и "новый" символ запра Richik123 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2012 17:32
Преобразовать все строчные латинские буквы в прописные, а цифры заменить символом *. (Delphi) Dark Raven Помощь студентам 1 19.01.2012 14:53
заменить на звездочки большие латинские буквы vovan665 Паскаль, Turbo Pascal, PascalABC.NET 4 02.10.2008 16:40