Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замена в файле 3 больших букв на аналогичные маленькие [XP]


Indigo ©   (2007-12-18 14:04:00) 

Собственно, последний вопросик к вам. Необходимо открыть файл, в нём найти большие буквы A, B, C и заменить их на маленькие. Всё ничего, но файл невозможно открыть, выдаёт ошибку.
var
c, s, e: char;
i: integer;
fo, fi: Text;
fn: string[255];

begin

repeat

{-Открытие файла-}
repeat
writeln('Vvedite polnoe ima faila:'); readln(fn);
assign(fo,fn);
{$I-}      {отключение проверки ошибок в/в}
reset(fo);
{$I+}      {включение проверки ошибок в/в}
i:=IOResult;
if i<>0 then begin
writeln('Error: ',i:3);
writeln('Poprobuite ewe raz!');
end;
until i = 0;

  writeln('Open File:'); write(fo);

{-Создание и открытие файла исправлений-}
assign(fi,fn+'-mod.txt');
{$I-}      {отключение проверки ошибок в/в}
rewrite(fi);
{$I+}      {включение проверки ошибок в/в}
i:=IOResult;
if i<>0 then begin
writeln('Error: ',i:3);
writeln('File can not opened. Programa budet zakruta!');
readln;
exit;
end;
  writeln('Open File:'); write(fi);
writeln;

{-посимвольный перенос-копирование с исправлением-}
while not(eof(fo)) do
begin
read(fo,c);
if c = 'A' then c := 'a';
if c = 'B' then c := 'b';
if c = 'C' then c := 'c';
write(fi,c);
end;

{-возвращаем справедливость-}
close(fo);    writeln('Close File:'); write(fo);
close(fi);    writeln('Close File:'); write(fi);

   writeln('End of work? - 1, 0');
   readln(e);
   until e='1';

end.


Сергей М.   (2007-12-18 14:45:00) [1]


> Indigo   (18.12.07 14:44) [12]


> есть и консольные приложения насколько мне известно


Да, таковые имеют место быть.


> там паскальные функции


ты эту траву больше не кури.


turbouser   (2007-12-18 14:45:00) [2]


> Сергей М. ©   (18.12.07 14:38) [8]

У автора явно лаба по работе с файлами


> Сергей М. ©   (18.12.07 14:42) [11]

Мда...


Indigo   (2007-12-18 14:44:00) [3]

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


Сергей М.   (2007-12-18 14:42:00) [4]


> мну под паскаль


А конференция, меж прочим, "вроде под делфи".
Ты часом не заблудился ?


Indigo   (2007-12-18 14:39:00) [5]

Это вроде для делфи... мну под паскаль...


Сергей М.   (2007-12-18 14:38:00) [6]


> Indigo   (18.12.07 14:04)


Ты эту траву больше не кури.

Для сравнительно небольших файлов (а у тебя они небольшие, ибо изрядно отдает банальным "низачотом") есть готовый класс и готовые ф-ции:

sl: TStringList;
s: String;
..
sl := TStringList.Create;
try
 sl.LoadFromFile(fn);
 sl.Text := StringReplace(sl.Text, 'A', 'a', [rfReplaceAll]);
 sl.Text := StringReplace(sl.Text, 'B', 'b', [rfReplaceAll]);
 sl.Text := StringReplace(sl.Text, 'C', 'c', [rfReplaceAll]);
 sl.SaveToFile(fn);
finally
 ms.Free;
end;


Сергей М.   (2007-12-18 14:38:00) [7]


> ms.Free;


sl.Free


Palladin   (2007-12-18 14:31:00) [8]


> [6] Indigo   (18.12.07 14:28)

ну, мля, ты же сам дал команду закрыть close(fo), close(fi)


Indigo   (2007-12-18 14:28:00) [9]

Как это уже закрыт, если он закрывается в конце работы программы?


turbouser   (2007-12-18 14:23:00) [10]


> Indigo   (18.12.07 14:09) [2]

Не доступен, так как уже закрыт.
close(fo);   writeln('Close File:'); write(fo);
close(fi);   writeln('Close File:'); write(fi);


turbouser   (2007-12-18 14:23:00) [11]


> Indigo   (18.12.07 14:09) [2]

И, на будущее - код надо оформлять по человечески.


Плохиш   (2007-12-18 14:22:00) [12]

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


Indigo   (2007-12-18 14:09:00) [13]

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


turbouser   (2007-12-18 14:08:00) [14]


>
> Indigo   (18.12.07 14:04)
>
> невозможно открыть, выдаёт ошибку.

Какую?


Наверх

Титульная страница Поиск, карта сайта Написать письмо