записи с вариантами и вложенные записи, нужна помощь.

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

renx
Сообщения: 3
Зарегистрирован: 03 июн 2009, 14:30
Откуда: I live on the EARTH
Контактная информация:

Всем привет, нужна помощь по записям с вариантами и вложенными записями. Во вложении есть схема, помогите пожалуйста описать это в паскале, заранее спасибо. :)
Вложения
Вот как реализовать такое на Pascal.zip
(6.81 КБ) 12 скачиваний
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Код: Выделить всё

type
  v1 = record
    Parameter1:<тип>;
    case byte of
      1 :( Parameter2:<тип>;
         Parameter3:<тип> ;) ;
      2 :( Parameter12:<тип> ;) ;
    end;
renx
Сообщения: 3
Зарегистрирован: 03 июн 2009, 14:30
Откуда: I live on the EARTH
Контактная информация:

А вот с этим не поможите. ВО вложении слегка измененная схема.
Вложения
Вот как реализовать такое на Pascal(добавлено).zip
(7.26 КБ) 18 скачиваний
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Ну так, по аналогии не смогли сделать?
Так как пипы данных не указаны, то я буду считать, что вариант1 в обоих ветвях - это идентичные структуры, а Вариант2 - разные.
Также уточните V1 и V2 - это тоже варианты или это 2 поля типа "Объекты"?
ronayt
Сообщения: 25
Зарегистрирован: 26 май 2009, 22:05

Naeel Maqsudov писал(а):

Код: Выделить всё

type
  v1 = record
    Parameter1:<тип>;
    case byte of
      1 :( Parameter2:<тип>;
         Parameter3:<тип> ;) ;
     [B][U] 2[/U][/B] :( Parameter12:<тип> ;) ;
    end;
а как вместо "2" выделеным сверху, можно вставить множество?
у меня пишет отакую ошибку: Incompatible types: 'Byte' and 'Set'
хотя вроде по книжке сейчас читаю там просто вставили множество и все (
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Так?

Код: Выделить всё

type
  v1 = record
    Parameter1:<тип>;
    case byte of
      1 :( Parameter2:<тип>;
         Parameter3:<тип> ;) ;
      2..4, 6 :( Parameter12:<тип> ;) ;
    end;
Только в данном случае все это выглядит бессмысленно, т.к. эти значения (варианты case) не сравниваются со значением никакой конкретной переменной.
renx
Сообщения: 3
Зарегистрирован: 03 июн 2009, 14:30
Откуда: I live on the EARTH
Контактная информация:

А параметры ввиде записи можно как-то реализовать?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
может я что то не так объясняю.
Выкладываю суть самой проблемы. помогите с описанием данных.
Вложения
Имеются объекты V1.zip
(7.65 КБ) 18 скачиваний
ronayt
Сообщения: 25
Зарегистрирован: 26 май 2009, 22:05

case Tracks: byte of
1: (Track1: Track);
[2..20]: ATracks: array[1..19] of Track;

ну вот мой Сase и так типа анаписано в книжке, но почему delphi множество не нравится ((
чо делать ? кто подскажет? )
автор, сор, увидил вопрос по моей теме ну и написал свой, подумал. может и тебе будет полезен ))
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):Только в данном случае все это выглядит бессмысленно, т.к. эти значения (варианты case) не сравниваются со значением никакой конкретной переменной.
Это примочки только для компилятора, когда одна и та же структура может быть интерпретирована по разному. Типа как здесь:

Код: Выделить всё

  T2DRect   = packed record
              case Integer of
                   0: (Left,Top,Right,Bottom : Double);
                   1: (TopLeft, BottomRight  : T2DPoint);
              end;
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

&quot писал(а):мой Сase и так типа анаписано в книжке, но почему delphi множество не нравится
Потому, что "множеству" тут не место. Тут может быть только диапазон или значение или список из значений и диапазонов.
Так что возьмите белую канцелярскую краску типа "Штрих" и книгу Вашу аккуратненько пофиксите :)
Ответить