Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.10.2010, 15:17
whizzkey whizzkey вне форума
Прохожий
 
Регистрация: 16.10.2010
Сообщения: 35
Репутация: 10
По умолчанию Удаление записей из типизированного файла

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

Последний раз редактировалось whizzkey, 29.10.2010 в 15:43.
Ответить с цитированием
  #2  
Старый 29.10.2010, 17:32
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

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

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 06.11.2010, 07:24
whizzkey whizzkey вне форума
Прохожий
 
Регистрация: 16.10.2010
Сообщения: 35
Репутация: 10
По умолчанию

Ну а по подробнее о seek? Я знаю только что она используется для смещения файлового указателя и как она мне может помочь ?? Нешарю =(( Ты имеешь ввиду с помощью seek запихнуть вопрос в конец файла?? На удаление вроде не похоже
Ответить с цитированием
  #4  
Старый 06.11.2010, 10:31
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Удалять из типизированного файла строки надо так: читаешь весь файл в переменную, удаляешь из нее нужный фрагмент, и записываешь ее еще раз в файл... По другому не как
__________________
Помогаю за Спасибо
Ответить с цитированием
  #5  
Старый 06.11.2010, 13:36
whizzkey whizzkey вне форума
Прохожий
 
Регистрация: 16.10.2010
Сообщения: 35
Репутация: 10
По умолчанию

Ребят, хотяб примеров простых дайте =)
Ладно, тогда давайте я напишу как я понимаю в коде а вы тогда поправьте если гдето не прав, ок ?
Посидев пару часиков за мануалами к делфи вроде как понял что можно коечто намутить при помощи seek и еще одной функции truncate

Цитата:
procedure TForm1.Button1Click(Sender: TObject); //пусть будет удаление по кнопке 1
//Переменная ftest, процедуры writetest и readtest описаны в модуле
begin
//n = номер удаляемой записи, начиная с 0
seek(ftest, filesize(ftest) - 1);
readtest
seek(ftest, n - 1);
writetest
//когда запись уже находиться в конце файла, я ее отсекаю
seek(ftest, filesize(ftest) - 1);
truncate(ftest);
Вроде как то так, но возникает ошибка I/O((

Последний раз редактировалось whizzkey, 06.11.2010 в 14:39.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025