Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.20;
Скачать: CL | DM;

Вниз

Замена в файле 3 больших букв на аналогичные маленькие   Найти похожие ветки 

 
Indigo   (2007-12-18 14:04) [0]

Собственно, последний вопросик к вам. Необходимо открыть файл, в нём найти большие буквы 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.


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


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

Какую?


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

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


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

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


 
turbouser ©   (2007-12-18 14:23) [4]


> 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) [5]


> Indigo   (18.12.07 14:09) [2]

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


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

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


 
Palladin ©   (2007-12-18 14:31) [7]


> [6] Indigo   (18.12.07 14:28)

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


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


> 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) [9]


> ms.Free;


sl.Free


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

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


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


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


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


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

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


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


> Indigo   (18.12.07 14:44) [12]


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


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


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


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


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


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

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


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

Мда...



Страницы: 1 вся ветка

Текущий архив: 2008.01.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
2-1198046858
vegarulez
2007-12-19 09:47
2008.01.20
Проблема с установкой indy 10 на D6.


9-1165994367
Аццкий_рыцарь
2006-12-13 10:19
2008.01.20
Options.ini


3-1189675476
vtur
2007-09-13 13:24
2008.01.20
ZeosLib + Interbase


2-1197574662
Vitek2
2007-12-13 22:37
2008.01.20
Как проверить запущен ли процесс?


2-1198171895
savyhinst
2007-12-20 20:31
2008.01.20
Сменить длину динамического массива строк из процедуры нельзя?