Главная страница
    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.47 MB
Время: 0.044 c
4-1147352842
Dimich1978
2006-05-11 17:07
2006.09.10
Более рациональное отслеживание Существование процесса


15-1154524701
cyborg
2006-08-02 17:18
2006.09.10
Как работают спам-роботы?


2-1155888631
Elen
2006-08-18 12:10
2006.09.10
SendMessage VS Access Violation


3-1151744812
Lis'S
2006-07-01 13:06
2006.09.10
Пробелы в таблицах БД


15-1156179734
GeLLeT
2006-08-21 21:02
2006.09.10
WinAPI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский