Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Удалить текущую строку в типизированном файле.   Найти похожие ветки 

 
pkm   (2006-10-19 15:03) [0]

Доброе время суток. Подскажите плиз. как удалить текущую строку в типизированном файле? спасибо за внимание.


 
DrPass ©   (2006-10-19 15:04) [1]

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


 
Сергей М. ©   (2006-10-19 15:04) [2]

Вариантов - туева хуча.

тебе какой ? 8-й ? столохматый ?


 
pkm   (2006-10-19 15:07) [3]

мне вариант, где можно обойтись без создания дополнительных таблиц. Если можно.


 
Сергей М. ©   (2006-10-19 15:12) [4]


> pkm   (19.10.06 15:07) [3]


> таблиц


Упс ...
Чем дальше в лес, тем толще партизаны) ..

Откуда тут, позволь полюбопытствовать, взялись какие-то там "таблицы" ?

Ты читаешь вх.файл, строка за строкой, в порядке прочтения ... Все прочитанное тут же записываешь в вых.файл, за исключением того что записывать не следует по твоей логике


 
Джо ©   (2006-10-19 15:13) [5]

Какие таблицы? Какие строки? Ты о типизированных файлах или о чем?


 
pkm   (2006-10-19 15:20) [6]

Попутался. Я вместо таблиц хотел сказать (написать) файлы. Конец рабочего дня голова кругом.


 
Джо ©   (2006-10-19 15:21) [7]

> [6] pkm   (19.10.06 15:20)
> Попутался. Я вместо таблиц хотел сказать (написать) файлы.
> Конец рабочего дня голова кругом.

Ну, так ответ был дан еще в посте [1].


 
pkm   (2006-10-19 15:23) [8]


> Вариантов - туева хуча.
>
> тебе какой ? 8-й ? столохматый ?


Я думал есть, хоть один вариант, где не надо создавать дополнительные файлы.


 
stone ©   (2006-10-19 15:27) [9]


> pkm   (19.10.06 15:23) [8]
> Я думал есть, хоть один вариант, где не надо создавать дополнительные
> файлы.

По другому не бывает


 
Джо ©   (2006-10-19 15:30) [10]

> [8] pkm   (19.10.06 15:23)
> Я думал есть, хоть один вариант, где не надо создавать дополнительные
> файлы.

Есть. Читаем весь файл в память, в соответствующую структуру. Затем перезаписываем старый файл данными из структуры, опускаю ненужную запись. Как видишь, обошлись без дополнительного файла.


 
pkm   (2006-10-19 16:19) [11]

Ну большущее спасибо.


 
palva ©   (2006-10-19 16:40) [12]

Можно, конечно, без дополнительного файла, но довольно сложно. Следующий пример удаляет пятую строку в файле sss.txt

{$APPTYPE CONSOLE}
var
 f: file of Char;
 c: Integer;
 b: Char;
 ps, p1, p2: Integer;
begin
 AssignFile(f, "sss.txt");
 Reset(f);
 ps := FileSize(f);
 c := 1;
 
 repeat
   Read(f, b);
   if ord(b) = 10 then inc(c);
 until c = 5;
 p1 := filepos(f); // позиция начала пятой строки
 repeat
   Read(f, b);
 until ord(b) = 10;
 p2 := filepos(f); // позиция начала шестой строки
 // затираем пятую строку перенося по одному байту вверх
 repeat
   Seek(f, p2); Read(f, b); Inc(p2);
   Seek(f, p1); Write(f, b); Inc(p1);
 until p2 = ps;

 truncate(f); // обрезаем файл на диске

 CloseFile(f);
end.

Для простоты у нас буфер - один байт. Поэтому программа работает медленно. Правда, это будет заметно только на больших файлах. Можно взять большой буфер, тогда придется сильно усложнять программу. Это уж поробуйте сами.


 
Anatoly Podgoretsky ©   (2006-10-19 18:58) [13]

pkm   (19.10.06 15:23) [8]
Без проблем, читай блок из одного места, пиши в другое, далее обрезай файл.


 
Slym ©   (2006-10-20 06:36) [14]

Не удаляй... а помечай как удаленный и при чтении отбрасывай...
при добавлении можно пробежаться по удаленным и перезаписать



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.247 c
2-1161674453
dera
2006-10-24 11:20
2006.11.05
Как убрать пароль на открытие любой БД в MS Access?


15-1160980134
IMHO
2006-10-16 10:28
2006.11.05
Какой ценой строились египетские пирамиды?


2-1160984972
gvozdkoff
2006-10-16 11:49
2006.11.05
Paradox на другом компе


15-1161000666
clickmaker
2006-10-16 16:11
2006.11.05
Вакансии Delphi


2-1161072297
Raptoridze
2006-10-17 12:04
2006.11.05
путь к файлу