![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Здравствуйте, у меня появился такой вопрос. Есть ли в Delphi стандартная функция для удаления какой-либо записи из файла? Нигде не нашел такой информации. Просто необходимо некоторую записи в файле заменить новой, а для этого ее надо удалить.
Сам я пробовал сделать свою функцию, но она работает слишком медленно. Вот она: Код:
|
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
1) непонятно, что Вам собственно надо...
2) так КАТЕГОРИЧЕСКИ нельзя. Ну что ж, Вы всё правильно сделали, и даже процедуру правильную дёргаете, но в цикле!! По одному БАЙТУ!! попробуйте заменить: Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Спасибо, так стало работать намного быстрее. Впрочем, я делал почти так же, за исключением лишь одного: вместо sFile[1] писал просто sFile, после чего в нужном файле оказывались какие-то непонятные символы. Если несложно, не могли бы вы разъяснить, в чем причина этого и в чем разница?
Цитата:
|
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
если записывать надо ПОВЕРХ достаточно Код:
p.s. перед строкой находится служебная информация. а первый символ строки имеет индекс 1 поэтому Stroka[1] - это, фактически указатель на первый символ строки... потом указываем длину строки. (кстати, надо с этим аккуратнее, если строка WideString/Unicode - то каждый символ занимает больше одного байта, поэтому длину строки лучше умножать на размер одного символа: BlockWrite(f, UniString[1], Length(UniString)*SizeOf(Char)); |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
![]()
Спасибо. Со строкой, вроде, разобрался. Тогда еще такой вопрос: функция Rewrite, которой я открывал файл для записи, заменяет уже существующий файл. То есть, как мне казалось, если просто вставить туда данные, то все остальные данные, которые были в файле до этого, просто сотрутся. Разве не так?
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Открывайте через Reset()! и спокойно пишите через BlockWrite(..) По умолчанию filemode (в Pascal/Delphi) равен чтение/запись. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление записи | IraPr | Microsoft Office Access | 2 | 07.10.2010 17:22 |
Удаление текущей записи из файла | Proger_1 | Общие вопросы Delphi | 4 | 15.05.2010 23:35 |
Удаление записи из файла данных в Pascal. | Paster | Помощь студентам | 6 | 09.06.2009 18:48 |
Удаление записи из файла(Delphi) | студентка | Помощь студентам | 1 | 16.12.2007 13:54 |
Удаление записи с файла | werser | Помощь студентам | 8 | 27.06.2007 06:25 |