Текущий архив: 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.46 MB
Время: 0.025 c