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

Вниз

WORD > 2xBYTE   Найти похожие ветки 

 
shart ©   (2006-08-21 23:51) [0]

Есть число типа WORD, оно состоит из двух байтов, требуется узнать эти байты. Как?
С обратной задачей я справился {WORD:=(BYTE1 shl 8) or BYTE2;}, а вот с этой - не могу... :(


 
Ketmar ©   (2006-08-21 23:55) [1]

b0 := w and $FF;
b1 := (w shr 8) and $FF;


 
guav ©   (2006-08-21 23:56) [2]

Lo , Hi


 
Джо ©   (2006-08-21 23:56) [3]

Да хотя бы и так:
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;


 
Пусик ©   (2006-08-21 23:57) [4]

хм.

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:57) [5]

> [3] Джо ©   (21.08.06 23:56)

Пардон-с, Hi <-> Lo.


 
Джо ©   (2006-08-21 23:58) [6]

Еще варианты будут-с?
Что-то никто absolute не изпользует. ;)


 
shart ©   (2006-08-22 00:01) [7]

Спасибо всем ! ;) Проблему с вашеё помощью (и с Hi,Lo) решил :)))
Тема закрыта


 
Ketmar ©   (2006-08-22 00:02) [8]

> [6] Джо ©   (21.08.06 23:58)
будут.
var
 b0, b1: Byte;
 w: Word;
...
 Move(w, b0, 1);
 Move(PChar(@w)[1], b1, 1);
...


 
guav ©   (2006-08-22 00:03) [9]

> Еще варианты будут-с?

А как же ?
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:04) [10]

а давайте ещё через MMF напишем? и с сокетами по клиент-серверному типу!


 
Ketmar ©   (2006-08-22 00:04) [11]

а ещё можно событиями побитово собирать! вот.


 
Пусик ©   (2006-08-22 00:08) [12]

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];


 
Пусик ©   (2006-08-22 00:11) [13]

var
 BL,BH: Byte;
 w: Word;
 p: PByte;
begin
 w := 1025;
 p := @w;
 BL := p^;
 Inc(p);
 BH := p^;


 
guav ©   (2006-08-22 00:19) [14]

давно я asm не использовал...
procedure SplitWordIntoTwoBytes(const W: Word; out L, H: Byte); assembler;
asm
 MOV [EDX], AL
 MOV [ECX], AH
end;


 
Джо ©   (2006-08-22 00:20) [15]

Тю. Пока ходил за пивом все и понаписали :)


 
Германн ©   (2006-08-22 01:39) [16]

Не а! Никто так и не применил упомянутый тобой в Джо ©   (21.08.06 23:58) [6] absolute.
P.S. Ходить за пивом после полуночи - весьма чревато! :-)


 
Шпиён   (2006-08-22 04:53) [17]


> Германн ©   (22.08.06 01:39) [16]

А зачем его применять, если он упомянут? Не интересно уже -)))


 
Reindeer Moss Eater ©   (2006-08-22 09:16) [18]

var
bp : PByte;
W : Word;
b1,b2 : byte;
begin
pb := @W;
b1 := pb^;
Inc(pb);
b2 := pb^;
end;



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

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
1-1153738251
Zilog_
2006-07-24 14:50
2006.09.10
Как описать CallBack функцию с С++ на Delphi


2-1156347985
Jimmy
2006-08-23 19:46
2006.09.10
Порядок передачи фокуса


2-1156062211
4izh
2006-08-20 12:23
2006.09.10
передача данных в чужое адрессное пространство


15-1155584405
ronyn
2006-08-14 23:40
2006.09.10
Как создать приложение под разные ОС


2-1155830851
GTAID
2006-08-17 20:07
2006.09.10
PChar:=String