Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Записи с вариантами   Найти похожие ветки 

 
Anton   (2004-06-02 11:10) [0]

Вчера задавал этот вопрос, хочу ещё раз уточнить.
Есть такой код
type
 Long_Rec = packed record
   case byte of
     1: (Lo,Hi:word);
     2: (LoLo,LoHi,HiLo,HiHi:byte);
   end;
..............................................
 var
   v, aA, aB: Integer;
.................................        
      Long_Rec(v).LoHi := Byte(aA);
      Long_Rec(v).LoLo := Byte(aB);

Вопросы:
 1) Слово "byte" в операторе case of - это количество вариантов записи?
 2) При приведении v к Long_Rec значение аА и аВ присваиваются заменяют в памяти байты отведенные под переменную v?
 3) Вариант  2: (LoLo,LoHi,HiLo,HiHi:byte); - это вариант представления числа v?


 
Тимохов ©   (2004-06-02 11:14) [1]


> 1) Слово "byte" в операторе case of - это количество вариантов
> записи?

ничего не значит - просто синтаксис такой.
>  2) При приведении v к Long_Rec значение аА и аВ присваиваются
> заменяют в памяти байты отведенные под переменную v?

заменаяют lohi и lolo соответственно. т.е. будет заменена часть
v.

>  3) Вариант  2: (LoLo,LoHi,HiLo,HiHi:byte); - это вариант
> представления числа v?

здесь 4 байта, в v 4 байте. вы можете таким образом обращаться к байтам v по отдельности.


 
Anton   (2004-06-02 11:34) [2]

Вопрос - LoLo,LoHi,HiLo,HiHi:byte размещаются в памяти последовательно?


 
Тимохов ©   (2004-06-02 11:35) [3]


> Anton   (02.06.04 11:34) [2]

да.
в порядке описания.


 
Anton   (2004-06-02 11:40) [4]

А если будет записано так -  2: (LoLo,LoHi:byte; a: string);,
то приведение v к структуре сделать уже будет нельзя?
И когда я делаю так  Long_Rec(v) привожу v к записи, все присваивания делаются в том месте памяти где записана v?


 
Тимохов ©   (2004-06-02 11:43) [5]


> Anton   (02.06.04 11:40) [4]

вам string не удастся засунуть в вариантную запись.

> И когда я делаю так  Long_Rec(v) привожу v к записи, все
> присваивания делаются в том месте памяти где записана v?

да что вы одно и тоже спрашиваете уже не первый раз :))
ну, да...

ЗЫ. Возмите help, прочтите про вариантные записи. Что не поймете спросите. Иначе есть ощущение, что вы еще ничего не читали и не очень понятно, что вы знаете, что нет. Не конструктивно как-то ...


 
Anton   (2004-06-02 11:48) [6]

Спасибо за помощь


 
default ©   (2004-06-02 14:47) [7]

"> 1) Слово "byte" в операторе case of - это количество вариантов
> записи?

ничего не значит - просто синтаксис такой."
вот здесь не надо его запутывать, как раз размерностью байта и определ-ся макс-ое возм-ое число вар-ов трак-ки одних и тех же данных, он не совсем правда коррек-но выраз-ся, сказав 1)


 
Тимохов ©   (2004-06-02 14:49) [8]


> как раз размерностью байта и определ-ся макс-ое возм-ое
> число вар-ов трак-ки одних и тех же данных

и что это значит кроме синтаксиса? :))
здесь есть что-то от семантики?


 
default ©   (2004-06-02 14:54) [9]

Тимохов ©   (02.06.04 14:49) [8]
есть - возмо-ое число трактовок, ясно что на размер записи размер селектора не влияет
кстати могли просто сделать переч-ия через ";" без всяких селекторов; правда в книжках по пас-лю прив-ся очень сомнит-ое испол-ие этих селек-ов(мнимое)


 
Тимохов ©   (2004-06-02 14:56) [10]


> default ©   (02.06.04 14:54) [9]


> могли просто сделать переч-ия через ";

вот и я про тоже - это некий хвост наследия. Если бы они сейчас делали - уверен сделали бы через ";"



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
6-1082877505
Daniel
2004-04-25 11:18
2004.06.13
Сокеты в Unix


3-1084820947
bgelena
2004-05-17 23:09
2004.06.13
Только 5 экземпляров приложения!!!


3-1084629746
ss300
2004-05-15 18:02
2004.06.13
Строковые функции хранимых процедур Interbase


14-1085520043
CS_XatRiX
2004-05-26 01:20
2004.06.13
DElphi na4alnaja stadija!!!!!!!


3-1085222354
Damager
2004-05-22 14:39
2004.06.13
Автоинкрементное поле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский