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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.03.2012, 21:03
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию Тест

Пишу программу тест! В ней будет возможность создавать свои собственные тесты (короче конструктор тестов). Вся информация будет записываться в один файл! Так вот вопрос: какой файл лучше выбрать для записи всего этого дела. И меня в тесте несколько типов заданий, для каждого использую отдельную запись плюс еще общая информация! Думаю сначала нужно общую информацию вписать, потом все записи с заданиями, но вот как потом их прочитать от туда правильно вот в чём проблема?
Ответить с цитированием
  #2  
Старый 21.03.2012, 21:08
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

да любой. какой удобнее парсить.
хоть типизированный от объекта/записи и сливать все это дело в бинарном формате через filestream, хоть бд подними, хоть xml используй.
Чесслово (с), с чем умеешь работать - то и удобнее.
Ответить с цитированием
  #3  
Старый 21.03.2012, 21:14
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию

на счёт filestream, как можно обратится к записи, которая будет записана под определенным порядковым номером, если я её размер не знаю, там ведь только курсор перемещать можно по байтам? или есть другой способ?
Ответить с цитированием
  #4  
Старый 21.03.2012, 21:21
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Пионер
на счёт filestream, как можно обратится к записи, которая будет записана под определенным порядковым номером, если я её размер не знаю, там ведь только курсор перемещать можно по байтам? или есть другой способ?
точно тебе ответить на данный вопрос сейчас не смогу.

как обходной вариант, объединять все записи тестов в, например, массив или TList и сливать/читать целиком его и обращаться по индексу в уже загруженном состоянии.

кстати, что мешает узнать размер записи через SizeOf? Имею ввиду размер конкретного теста, перед его сливом в файл.
Ответить с цитированием
  #5  
Старый 21.03.2012, 21:29
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию

с массивом не получится, записи разные (Variant даже не подходит), можно по подробнее на счёт TList!
Ответить с цитированием
  #6  
Старый 21.03.2012, 21:36
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Пионер
с массивом не получится, записи разные (Variant даже не подходит), можно по подробнее на счёт TList!
ну... если совсем кратко, то у него имеются методы Add, Insert, IndexOf, LoadFromFile, SaveToFile, и ряд других полезных и не очень методов и полей, названиями говорящих самих за себя =)
Вот только по поводу добавления туда разных записей не могу сказать - просто не приходилось использовать.
Попробуй создать без указания параметров, просто как List:= TList.Create;
Ответить с цитированием
  #7  
Старый 21.03.2012, 21:48
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию

таже тема, типы не совместимы(
Ответить с цитированием
  #8  
Старый 21.03.2012, 21:59
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Пионер
с массивом не получится, записи разные ...
Структура файла примерно следующая:
1 - Идентификатор файла.
2 - Число записей.
3 - Длина записи.
4..х - Описание полей записей.
х+1 - смещение в файле на запись.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 21.03.2012, 22:06
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от angvelem
Структура файла примерно следующая:
1 - Идентификатор файла.
2 - Число записей.
3 - Длина записи.
4..х - Описание полей записей.
х+1 - смещение в файле на запись.
как я понял, проблема в том, что у записей будут разные длины.
Ответить с цитированием
  #10  
Старый 21.03.2012, 22:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Поэтому предлагаю подобную структуру.
P.S. У меня подобная во многих проектах используется.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 21.03.2012, 22:21
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от angvelem
Поэтому предлагаю подобную структуру.
P.S. У меня подобная во многих проектах используется.
тогда п.3 должен выглядит как "Длина каждой записи", я полагаю?
Ответить с цитированием
  #12  
Старый 21.03.2012, 22:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

именно так.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #13  
Старый 21.03.2012, 22:29
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Извиняюсь, не правильно выразился.
Имел ввиду "Перечисление всех длин всех записей". Стоит читать так? Иначе я не понимаю, как контролировать смещение в случае записей с разной длиной.

Последний раз редактировалось nixel, 21.03.2012 в 22:32.
Ответить с цитированием
  #14  
Старый 21.03.2012, 22:36
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от nixel
Извиняюсь, не правильно выразился...
Всё правильно.
Смещение высчитывается при записи структуры в файл.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #15  
Старый 21.03.2012, 22:40
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

смещение указывается для каждой записи отдельно?
тогда все понятно, спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter