Помощь - Поиск - Пользователи - Календарь
Полная версия: работа с файлами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-student-
Написать программу, позволяющую по выбору создавать, находить, переименовывать, дополнять, читать, удалять файл и записывать информацию в файл

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

вот моя прога:


 uses dos,crt;

var
infile:text;
vibor:char;


procedure makefile;
var

i,maxn,m:integer;
begin
clrscr;
assign(infile,'c:\file');
rewrite(infile);
writeln('сколько вводится символов');
readln(maxn);
write(infile,maxn);

for i:=1 to maxn do
begin
read(m);
write(infile,m);
end;
close(infile);
end;

procedure chtenie;

var

i:integer;
a:array[1..100] of integer;



begin
assign(infile,'c:\file');
reset(infile);
for i:=1 to 5 do
while not(eof(infile)) do
begin
read(infile,a[i]);

writeln('k=',a[i]);
close(infile);
end;
end;

procedure pename;
var
newname:string;

begin
assign(infile,'C:\file');
reset(infile);
readln(newname);
rename(infile,newname);
close(infile);
end;

procedure udalenie;

begin
assign(infile,'c:\file');
reset(infile);
close(infile);
erase(infile);
end;

procedure found;

begin
assign(infile,'c:\file');
fsearch('file','c:\');
end;



begin

makefile;
writeln('созданный файл - c:\file');

writeln('переименовать-1;найти-2;дополнить-3;удалить-4;читиать-5 файл');
readln(vibor);

case vibor of
'1': pename;
'2': found;
'4': udalenie;
'5': chtenie;
end;


readln;




end.

теги...
volvo
-student-,
а что, для удаления файла нужно обязательно файл открыть, закрыть, и только потом удалить? Просто Assign не достаточно?

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

При "поиске" файла все-таки должна быть функция, а не процедура... Тебе же нужно получить путь к файлу...

Для дополнения текстового файла открывай его через Append, а не Reset ...
NightPaladin
Вот выложил свои наброски (пока без поиска -его завтра):
Код
program File_Worck;
Uses
    CRT;
var
    ExF1  :  Text;
    ExF2  :  Text;
    Com   :  String[6];
{Їа®жҐ¤га  б®§¤ ­Ёп}
procedure Create;
var
    Path  :  String;
begin
    WriteLn('input path:');
    TextColor(red);
    Write('path:>_');
    ReadLn(Path);
    Assign(ExF1,path);
    ReWrite(ExF1);
    Close(ExF1);
end;


procedure ReadQ;
const
    MaxN = 50;
type
    Massive = array[1..MaxN] Of Integer;
var
    Path   :  String;
    mas    :  Massive;
    str    :  String;
begin
    WriteLn('input path:');
    TextColor(red);
    Write('path:>_');
    ReadLn(Path);
    Assign(ExF1,path);
    Reset(ExF1);
                ReadLn(ExF1, str);
    Close(ExF1);
end;

procedure WriteQ;
var
    Path  :  String;
    str   :  String;
begin
    WriteLn('input path:');
    TextColor(red);
    Write('path:>_');
    Read(Path);
    str:= 'Pascal_creating_file';
    Assign(ExF1,path);
    ReWrite(ExF1);
                WriteLn(ExF1, str);
    Close(ExF1);

end;

procedure AppendQ;
var
    Path  :  String;
    str   :  String;
begin
    WriteLn('path:');
    TextColor(red);
    Write('path:>_');
    Read(Path);
    str:= 'the_append_string';
    Assign(ExF1,path);
    Append(ExF1);
                WriteLn;
                WriteLn(ExF1, str);
    Close(ExF1);

end;

procedure ReNameQ;
var
    Path  :  String;
    Name  :  String;
    Temp  :  String;
begin
    WriteLn('path:');
    TextColor(red);
    Write('path:>_');
    Read(Path);
    name:= 'C:/new_name.txt';

    Assign(ExF1,path);
    reset(ExF1);

    Assign(ExF2, name);
    ReWrite(ExF2);
                repeat
                      ReadLn(ExF1,Temp);
                      WriteLn(ExF2,Temp);
                until Not EOF(ExF1);

    Close(ExF1);
    Close(ExF2);
end;
begin
    ClrScr;
             WriteLn('input command:');
             TextColor(green);
             WriteLn('create  ');
             WriteLn('read    ');
             WriteLn('write  ');
             WriteLn('append');
             WriteLn('rename ');
             WriteLn;
             TextColor(red);
             Write('command:>_');
             ReadLn(com);

             If com = 'create'         then Create
                Else If com = 'read'   then ReadQ
                Else If com = 'write'  then WriteQ
                Else If com = 'append' then AppendQ
                Else If com = 'rename' then ReNameQ;
             
    ReadKey;
end.
volvo
Ребята, вы что творите?
Процедуру Rename что, просто так включили в Паскаль? Не надо ничего изобретать, все проще гораздо !!!

procedure myRename;
var newname:string;
begin
assign(infile,'C:\file');
readln(newname);
rename(infile,newname);
end;


-student-, только учти, что Rename будет работать корректно только в пределах одного и того же диска...
-student-
большое спасибо за помощь
если не сдам курсовик то на осень оставят
Guest
при таком решении выдает ошибку : Path no found
volvo
А это смотря какой Path smile.gif
NightPaladin
Цитата
Ребята, вы что творите?
Процедуру Rename что, просто так включили в Паскаль? Не надо ничего изобретать, все проще гораздо !!!

Извеняюсь - это я посмотрел как сдела студент ирешил, что "мы пойдём другим путём'' :D . И начал вот это вот - из одного читаем, создаём новый с новым именем - всё в него копируем и старый удаляем. Мда рациональностью не блещет... smile.gif
Дож
Цитата
А это смотря какой Path


В строчке 4 твоего кода ;):

Код

{1:}procedure myRename;
{2:}var newname:string;
{3:}begin
{4:}assign(infile,'C:\file'); {<--Здесь естественно}
{5:}readln(newname);
{6:}rename(infile,newname);
{7:}end;
volvo
Цитата(Дож @ 16.05.05 18:58)
В строчке 4 твоего кода

Спасибо за напоминание, но имелось в виду "Смотря какой Path <введен>"...
Дож
У меня предположение, что он забыл указать расширение(судя по начальному коду)... А за это паскаль так и ругается ;) .
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.