![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WORD > 2xBYTE [D7]
shart © (2006-08-21 23:51:00)Есть число типа WORD, оно состоит из двух байтов, требуется узнать эти байты. Как?
С обратной задачей я справился {WORD:=(BYTE1 shl 8) or BYTE2;}, а вот с этой - не могу... :(
Reindeer Moss Eater (2006-08-22 09:16:00) [1]var
bp : PByte;
W : Word;
b1,b2 : byte;
begin
pb := @W;
b1 := pb^;
Inc(pb);
b2 := pb^;
end;
Шпиён (2006-08-22 04:53:00) [2]
> Германн © (22.08.06 01:39) [16]
А зачем его применять, если он упомянут? Не интересно уже -)))
Германн (2006-08-22 01:39:00) [3]Не а! Никто так и не применил упомянутый тобой в Джо © (21.08.06 23:58) [6] absolute.
P.S. Ходить за пивом после полуночи - весьма чревато! :-)
Джо (2006-08-22 00:20:00) [4]Тю. Пока ходил за пивом все и понаписали :)
guav (2006-08-22 00:19:00) [5]давно я asm не использовал...
procedure SplitWordIntoTwoBytes(const W: Word; out L, H: Byte); assembler;
asm
MOV [EDX], AL
MOV [ECX], AH
end;
Пусик (2006-08-22 00:11:00) [6]
var
BL,BH: Byte;
w: Word;
p: PByte;
begin
w := 1025;
p := @w;
BL := p^;
Inc(p);
BH := p^;
Пусик (2006-08-22 00:08:00) [7]
var
wrd: array[0..1] of Byte;
w: word;
BL,BH: Byte;
begin
w := 1025;
Move(w,wrd[0],SizeOf(w));
BL := wrd[0];
BH := wrd[1];
Ketmar (2006-08-22 00:04:00) [8]а давайте ещё через MMF напишем? и с сокетами по клиент-серверному типу!
Ketmar (2006-08-22 00:04:00) [9]а ещё можно событиями побитово собирать! вот.
guav (2006-08-22 00:03:00) [10]> Еще варианты будут-с?
А как же ?
1. div 256 и mod 265
2.
with TMemoryStream.Create do
try
writebuffer(w, 2);
seek(0, soFromBeginning)l
readbuffer(l, 1);
readbuffer(h, 1);
finally
Free;
end;
3. PByte(Succ(Integer(@W)))^ , PByte(@W)^
Ketmar (2006-08-22 00:02:00) [11]> [6] Джо © (21.08.06 23:58)
будут.
var
b0, b1: Byte;
w: Word;
...
Move(w, b0, 1);
Move(PChar(@w)[1], b1, 1);
...
shart (2006-08-22 00:01:00) [12]Спасибо всем ! ;) Проблему с вашеё помощью (и с Hi,Lo) решил :)))
Тема закрыта
Джо (2006-08-21 23:58:00) [13]Еще варианты будут-с?
Что-то никтоabsoluteне изпользует. ;)
Джо (2006-08-21 23:57:00) [14]> [3] Джо © (21.08.06 23:56)
Пардон-с, Hi <-> Lo.
Пусик (2006-08-21 23:57:00) [15]хм.
Hi()
Lo()
var
i: Integer;
BL,BH: Byte;
w: Word;
begin
w := 1025;
BL := Lo(w);
BH := Hi(w);
или
BL := w;
BH := w shr 8;
Джо (2006-08-21 23:56:00) [16]Да хотя бы и так:
type
TWordRec = record
case Byte of
0: (Hi, Lo: Byte);
1: (Wrd: Word);
end;
var
W: TWordRec;
begin
W.Wrd := $FFAA;
ShowMessageFmt ('%x %x',[W.Lo, W.Hi]);
end;
guav (2006-08-21 23:56:00) [17]Lo , Hi
Ketmar (2006-08-21 23:55:00) [18]b0 := w and $FF;
b1 := (w shr 8) and $FF;