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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2014, 11:07   #1
Alexandr17
Форумчанин
 
Регистрация: 10.12.2013
Сообщений: 227
По умолчанию запись и чтения динамического рекорда с 1 динамическим типом в бинарный файл delphi

Собственно вопрос. Как сделать запись и чтение рекорда такой структуры в бинарный файл.
Код:
Type TWAnswers=Array of String;
type TQuestion=Record
  {-- Вопрос  --}
  Question:String;
  {-- Варианты ответов  --}
  Answers:TWAnswers;
  {-- Правильный ответ  --}
  Correct_Answer:integer;
  {-- Балы прибавляемые за правильный ответ --}
  Point_Correct_Answer:integer;
  {-- Балы отнимаемые за неправильный ответ --}
  Point_Wrong_Answer:integer;
  {-- ИД вопроса  --}
  ID_Question:Integer;
end;
Var
  Question:Array of TQuestion;
Alexandr17 вне форума Ответить с цитированием
Старый 26.10.2014, 11:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нужно разработать так называемую Сериализацию.
Все зависит от того как ты записываешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2014, 11:14   #3
Alexandr17
Форумчанин
 
Регистрация: 10.12.2013
Сообщений: 227
По умолчанию

Никак пока. Тут главное чтобы значений этих переменных нельзя было прочесть
{-- Правильный ответ --}
Correct_Answer:integer;
{-- Балы прибавляемые за правильный ответ --}
Point_Correct_Answer:integer;
{-- Балы отнимаемые за неправильный ответ --}
Point_Wrong_Answer:integer;
Динамический рекорд записать в файл легко. но проблема в том что в рекорде содержится 1 динамический тип перенаправляющий на тип string. тоесть чтобы его записать во врайте нужно здать размер этого типа. но это сделать не возможно только если писать отдельно. а это приведет к тому что все переменные писать отдельно прийдется. а переменную string через врайт без ограничения 255 символов не запишешь.
Alexandr17 вне форума Ответить с цитированием
Старый 26.10.2014, 11:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тут главное чтобы значений этих переменных нельзя было прочесть
Это не главное. Их зашифровать можно.
А вот то как ты определишь структуру записываемого - важно.
Я обычно для записи строки в файл просто вписываю ее длину перед самой строкой. потом тогда считать проще. То же самое для динмассиов - сначала вписывается их размерность потом считываются сами данные.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2014, 11:57   #5
Alexandr17
Форумчанин
 
Регистрация: 10.12.2013
Сообщений: 227
По умолчанию

это понятно. я про то мажно ли както записать рекорд со всеми данными а не записывать каждую переменную в рекорде отдельно. в рекорде используется динамический тип перенаправляющий на тип string. Я слышал можно сделать запись рекорда и не записывать кажду переменную в рекорде отдельно даже если там есть динам тип.
Alexandr17 вне форума Ответить с цитированием
Старый 26.10.2014, 12:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вроде-бы есть функция Finalize(), которая якобы образмеривает динмассивы, но я не силен в этой теории, никогда ей не пользовался. Я всегда делал в подобном классе метод, сериализирующий данные в поток с описанием структуры, чтоб их потом можно было развернуть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2014, 12:28   #7
Alexandr17
Форумчанин
 
Регистрация: 10.12.2013
Сообщений: 227
По умолчанию

а ты можешь дать пример записи для такой структуры рекорда или нет. можно и через stream мне главное чтобы файл был бинарным
Alexandr17 вне форума Ответить с цитированием
Старый 26.10.2014, 12:31   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну мочь то могу, но нужно его писать )
А мне сейчас тупо влом, я отдыхаю от будней, блича зырю, шоколад хаваю... да и пора на выборы топать скоро.
Уж изивини - лень чет напала в эти выходные.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2014, 12:40   #9
Alexandr17
Форумчанин
 
Регистрация: 10.12.2013
Сообщений: 227
По умолчанию

Кстати шифровчик я уже сделал. не думаю что любой сможет сказать что здесь за текст зашифрован:
Код:
1100111111110000111011101110001111110000111000001110110011101100111000000010000011100100111011101110101111100110111011011110000000100000111100001110000011100001111011101111001011100000111100101111110000101110
Alexandr17 вне форума Ответить с цитированием
Старый 26.10.2014, 12:54   #10
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Так же как и всегда.
SetLength, New и т.п.
P.S. В английском языке множественное число у существительных выражается через прибавлению к существительному окончания s.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в бинарный файл структуры Стремящийся Visual C++ 1 18.03.2012 13:01
Запись в бинарный файл структур средствами C++ MooNDeaR Общие вопросы C/C++ 21 06.03.2012 21:20
запись в бинарный файл Shepard90 Общие вопросы C/C++ 2 28.06.2011 08:59
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47
запись классов в бинарный файл Feannewedd Общие вопросы C/C++ 6 29.06.2009 10:11