IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> работа с файлами, помогите курсовая горит
сообщение
Сообщение #1


Гость






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

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

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


 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.

теги...

Сообщение отредактировано: Oleg_Z -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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

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

Для дополнения текстового файла открывай его через Append, а не Reset ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Вот выложил свои наброски (пока без поиска -его завтра):
Код
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.


Сообщение отредактировано: NightPaladin -


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ребята, вы что творите?
Процедуру Rename что, просто так включили в Паскаль? Не надо ничего изобретать, все проще гораздо !!!

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


-student-, только учти, что Rename будет работать корректно только в пределах одного и того же диска...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






большое спасибо за помощь
если не сдам курсовик то на осень оставят
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






при таком решении выдает ошибку : Path no found
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






А это смотря какой Path smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 67
Пол: Мужской

Репутация: -  0  +


Цитата
Ребята, вы что творите?
Процедуру Rename что, просто так включили в Паскаль? Не надо ничего изобретать, все проще гораздо !!!

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


--------------------
На горе лежит дискета
У неё испорчен boot
Через дырочку в конверте
Её вирусы грызут
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской

Репутация: -  1  +


Цитата
А это смотря какой 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;


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(Дож @ 16.05.05 18:58)
В строчке 4 твоего кода

Спасибо за напоминание, но имелось в виду "Смотря какой Path <введен>"...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской

Репутация: -  1  +


У меня предположение, что он забыл указать расширение(судя по начальному коду)... А за это паскаль так и ругается ;) .


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.05.2024 14:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name