![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Замена в файле 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)
>
> невозможно открыть, выдаёт ошибку.
Какую?