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

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

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

> Удаление строки
Serega
сообщение 29.12.2003 19:41
Сообщение #1


Новичок
*

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

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


Здравствуй, народ.
Мне вот что интересно: Как удалить, например, последнюю строку из файла?


--------------------
Не могу сидеть, когда другие работают.
Пойду полежу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
GLuk
сообщение 29.12.2003 19:51
Сообщение #2


Профи
****

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

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


Под строкой в файле понимается текстовая строка, т.е. разделенная следующими байтами: 0Dh,0Ah??
Во-всяком случае, прочитать его в память, а оттуда уже и смотреть. Или читать в буфер, скажем байт 200 с конца файла. А потом обрезать файл до нужного размера...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 4.01.2004 7:59
Сообщение #3


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Вот Вам программа которая удалит любую по номеру строку

Код
procedure DelStrText(name: string; dels: string);
var
f1 : text;
f2 : text;
s : string;
Atr: word;
begin
ASSIGN(f1,name);
ASSIGN(f2,'TEXTFILE.DSF');
REWRITE(f2);
GETFATTR(f1,atr);
SetFAttr(f1,Hidden);
{$I-}
RESET(f1);
while not EOF(f1) do
begin
 readln(f1,s);
 If s<>DelS then writeln(f2,s)
end;
CLOSE(f1);
CLOSE(f2);
erase(f1);
rename(f2,name);
SetFAttr(f2,atr);
{$I+}
If IoResult<>0 then writeln('ERROR: ',IoResult)
end;
end.


после выполнения этой процедуры строка Dels "удалится"
можно изменив эту процедуру сделать так, что бы
она удаляла по номеру!


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 18.07.2025 17:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"