Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 11:42   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Еще можно реализовать через временный файл,
Светлая мысль. Вот и займись ею.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2009, 12:00   #12
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Я не знаю как можно удалить строку.
Можно и без временного файла сделать, но только нужно знать критерий удаления.
Вот из моей лабораторной:

Код:
type
Tchsl=117..217;
Stud=Record
FIO:string[20];
INYAZ:string[10];
MATEM:Tchsl;
end;

var
st:Stud;
F:File of Stud;
i,j:integer;
...................................
delstr:string;
s:boolean;
begin
ClrScr;
{$I-}
Reset(F);
{$I+}
Writeln('Введите Фамилию студента, которого нужно удалить:');
Readln(delstr);
s:=false;
for i:=0 to Filesize(F)-1 do
begin
Read(F,st);
if st.FIO=delstr then
begin
s:=true;
break;
end;
end;
if s then
begin
for j:=i+1 to Filesize(F)-1 do
begin
seek(F,j);
read(F,st);
seek(F,j-1);
write(F,st);
end;
truncate(F);
end;
Удаление строки по фамилии студента.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 30.03.2009 в 12:07.
rainbow вне форума Ответить с цитированием
Старый 30.03.2009, 13:28   #13
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию

Еле въехал в код, работает, спасибо большое. Только одно но. У меня не удаляет последнюю добавленную строчку, может я ошибся когда под свою программу переделывал..
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Старый 30.03.2009, 14:29   #14
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Razorishe, после добавления строки, файл сначало надо закрыть Close(F) чтобы изменения в файле вставленной строки сохранились, а потом открывать файл по новой и тогда удалять её.
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 31.03.2009, 19:22   #15
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию

Да что close нужно это понятно, но теи не мение у меня не удаляет последнюю строчку, у вас я так понял на место строчки, которую нужно удалить, копируется следующая строчка и после этого уже удаляется, а когда я хочу удалить последнюю строчку ему не на что её заменить, или я не так понял принцип работы?

Кто бы мог привести пример удаление строчки с помошью временного файла, а то я уже два дня практики убил никак разобраться не могу с этим удалением...
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Старый 31.03.2009, 19:52   #16
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Кто бы мог привести пример удаление строчки с помошью временного файла
Ну вот.. Простенький.
Удаляет строку с указанным номером.

Код:
uses crt;
var
f,ftmp : text;
i,k : integer;
s : string;

begin
clrscr;
assign(f,'test.txt');
assign(ftmp,'tmpfile.txt');

write('Vvedite nomer stroki: ');
readln(k);

reset(f);
rewrite(ftmp);

i:=1;
while not eof(f) do
 begin
 readln(f,s);
 if i<>k then
  writeln(ftmp,s);
 inc(i);
 end;

close(f);
close(ftmp);

rewrite(f);
reset(ftmp);

while not eof(ftmp) do
 begin
 readln(ftmp,s);
 writeln(f,s);
 end;

close(f);
close(ftmp);
erase(ftmp);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.03.2009, 20:06   #17
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию

дело в том что вы предложили решение для текстового файла, а у меня типизированный..
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Старый 31.03.2009, 20:09   #18
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот для типизированного.

Код:
uses crt;
var
f,ftmp : file of char;
i,k : integer;
s : char;

begin
clrscr;
assign(f,'test.txt');
assign(ftmp,'tmpfile.txt');

write('Vvedite nomer elementa: ');
readln(k);

reset(f);
rewrite(ftmp);

i:=1;
while not eof(f) do
 begin
 read(f,s);
 if i<>k then
  write(ftmp,s);
 inc(i);
 end;

close(f);
close(ftmp);

rewrite(f);
reset(ftmp);

while not eof(ftmp) do
 begin
 read(ftmp,s);
 write(f,s);
 end;

close(f);
close(ftmp);
erase(ftmp);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 31.03.2009, 20:17   #19
Razorishe
Пользователь
 
Аватар для Razorishe
 
Регистрация: 16.03.2009
Сообщений: 34
По умолчанию

спасибо большое, я в своем задании использую файл типа строка, буду додумывать как со строками делать, а не символами. Просто там задание больше под чар все переделывать... проще заного все писать Так что буду додумывать.
Добавляйте отзывы, буду благодарен
Razorishe вне форума Ответить с цитированием
Старый 31.03.2009, 20:24   #20
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Razorishe
Просто дело в том, что неважно какого типа будут элементы. Выглядеть это будет примерно как я написал.
Если у вас есть файл со строками (то есть самый обычный текстовый файл) и вы из него хотите удалить конкретную строку, то нужно его открывать как текстовый.
А чтобы работать с типизированными файлами, то и записывать их нужно как типизированные.
Вроде, нигде не ошибся.

ps Приведенный выше пример будет работать с обычным текстовиком. Но более-менее корректно работать он будет только если удалять видимые символы (а не символы перевода строки). Это я так, к примеру.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типизированные файлы Xeon332 Помощь студентам 8 27.02.2009 20:15
типизированные файлы MyQwErTy Паскаль, Turbo Pascal, PascalABC.NET 7 11.11.2008 20:54
Типизированные файлы.Паскаль.help! ромка) Паскаль, Turbo Pascal, PascalABC.NET 1 17.05.2008 07:59
Типизированные файлы.Создание, удаление, редактирование, сортировка записей типизированного файла.Паскаль Студент Шиза Помощь студентам 6 08.12.2007 13:41