Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
1-1085256109
Soldier
2004-05-23 00:01
2004.06.13
Номера строк рядом с TMemo


1-1086159413
Tom
2004-06-02 10:56
2004.06.13
ехе закрывается сам по себе...


8-1081022642
Mr Duda
2004-04-04 00:04
2004.06.13
Компонент векторной графики


4-1083829193
Tomkat
2004-05-06 11:39
2004.06.13
Delphi и приложения для торговли


1-1086160237
snake1977
2004-06-02 11:10
2004.06.13
Переустановка системы