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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 19:32   #1
Khayzenberg
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 54
Вопрос Variant и структура

Доброго времени суток:
Есть струткура:
PHP код:
type MyRecord record
  Name
:ShortString;
  
Data:Variant
end
Поле Data должно иметь одно с нескольких типов:
real, integer, и string[255]
Такого писать нельзя! Так как можно осуществить задачу?
Khayzenberg вне форума Ответить с цитированием
Старый 06.10.2012, 19:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Почему нельзя? Функция VarType поможет определить тип значения
Код:
procedure TForm1.BitBtn2Click(Sender: TObject);
type MyRecord = record
  Name:ShortString;
  Data:Variant;
end;
var r: MyRecord;
begin
  r.Name:='FFFF';
  r.Data:=1;
  ShowMessage(IntToStr(TVarType(VarType(r.Data))));
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.10.2012, 12:15   #3
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию

Зависит от того что нужно сделать, как потом эта запись использовался будет? Можно через Variant, можно через записи с вариантами, или указатели.
Armorer вне форума Ответить с цитированием
Старый 08.10.2012, 08:45   #4
Khayzenberg
Пользователь
 
Регистрация: 21.07.2011
Сообщений: 54
По умолчанию

я как всегда забыл упомянуть одну деталь эта структура будет сохранятся в фай и грузиться с него
Khayzenberg вне форума Ответить с цитированием
Старый 08.10.2012, 10:10   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Код:
type MyRecord = record
  Name:ShortString;
  DataReal: Real; 
  DataInteger: Integer;
  DataString: ShortString;
  Tip: Integer;
end;
В типе храните что у Вас за данные. 0 - реал, 1 - Интерджер, 2 - строка. Вообще Вам про это уже писали, зачем плодить темы? Сохранять в файл тоже не проблема - храните свои данные в строках к примеру: Каждая запись с новой строки. В строке сначала указываете тип данных, затем например через символ табуляции сами данные в текстовом виде. Все легко и просто. Места займете не много, если конечно не будете оперировать миллионами записей, ну и там можно файл подкачки замутить... Или же на базы данных переехать (что наверно правильней).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.10.2012, 10:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Khayzenberg
я как всегда забыл упомянуть одну деталь эта структура будет сохранятся в фай и грузиться с него
в пост #3 указана ссылочка на описание записи с вариантами. Подобные записи можно использовать для создания типизированного файла (ну и читать/писать в файла, разумеется, соответственно).
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип Variant Дэкан1 Помощь студентам 1 21.05.2010 20:31
Variant to Stream & Variant from Stream Oreol Общие вопросы Delphi 1 24.03.2009 13:14
Variant в TDateTime SoLL Общие вопросы Delphi 2 13.02.2009 11:49
тип Variant Михаил Юрьевич Общие вопросы Delphi 3 31.01.2008 09:05