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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2010, 15:31   #1
whiskey
 
Регистрация: 12.10.2010
Сообщений: 8
По умолчанию Удаление записей из типизированного файла

Всем доброго времени суток. Суть вот в чем - Дан типизированный файл для хранения информации о тесте, который сохраняет в одну запись количество вопросов, номер текущего вопроса, варианты ответов и правильный ответ.
Вопрос: Раз уж я выбрал 1 запись для хранения всего, как мне теперь добавить возможность удаления вопросов?

Поясню кодом:

Вот как у меня идет вопрос в тесте
Код:
......
const
NQ=100;//максимальное число вопросов
......
type
t_Test=record
QW:array[1..NQ] of String[200]; //массив номера вопроса
end;
var
Test:t_Test;
FTest:File of  t_Test; //файл для создания теста
n:byte;    //текущий вопрос
k:byte;     //количество вопросов
Над кнопкой добавить вопрос я долго не думал

Код:
k:=k+1;
label1.Caption:=intTostr(K);
А вот как теперь удалить текущий вопрос из теста?

Код:
Test.QW[n].delete ???

Последний раз редактировалось whiskey; 29.10.2010 в 15:44.
whiskey вне форума Ответить с цитированием
Старый 29.10.2010, 15:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А вот как теперь удалить текущий вопрос из теста?
Самое простое - раз это просто строка - затри ее, сделай пустой, а потом при записи в файл просто не пиши пустые строки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2010, 16:05   #3
whiskey
 
Регистрация: 12.10.2010
Сообщений: 8
По умолчанию

Что то типо того?
Код:
 
Test.QW[n]:='';
k:=k-1
n:=n-1

Потом как ограничить при записи?

if not Test.QW[n]='' then WriteTest; 
else n:=n-1;
whiskey вне форума Ответить с цитированием
Старый 29.10.2010, 16:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да да... Ты уловил месседж )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2010, 16:18   #5
whiskey
 
Регистрация: 12.10.2010
Сообщений: 8
По умолчанию

...Понял не тупой...Тупой не понял=)
Главное чтоб не криво работало
whiskey вне форума Ответить с цитированием
Старый 29.10.2010, 16:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну насчет кривизны - юзай БД и так вопрос не станет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2010, 15:05   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Решение:
• грузить все записи из файла в память, убирать не нужное, сохранять в исходный файл с полной перезаписью
• использовать временный файл для сброса нужных записей в него, затем удалить исходный файл, и записать на его место временный файл с именем исходного файла
• добавить в структуру записи поле(тип Boolean), для указания занятости поля. Если True, значит запись существует. Если False, значит запись удалена. При добавлении можно перезаписывать отключённые записи новыми данными, и ставить полю значение True.
Alter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление повторяющихся записей в БД Dinamik БД в Delphi 8 22.03.2012 22:05
Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать задание Zigfried Помощь студентам 2 04.10.2010 20:29
Удаление записей Blackmore БД в Delphi 2 26.05.2008 08:18
Типизированные файлы.Создание, удаление, редактирование, сортировка записей типизированного файла.Паскаль Студент Шиза Помощь студентам 6 08.12.2007 13:41
Удаление записей Arsgun БД в Delphi 7 09.07.2007 11:56