Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.039 c
15-1155559772
rimm
2006-08-14 16:49
2006.09.10
Потоки и поточные преложения...


4-1147445310
parovoZZ
2006-05-12 18:48
2006.09.10
Поле для ввода пароля.


15-1155587414
lookin
2006-08-15 00:30
2006.09.10
Сны


2-1156278470
abba
2006-08-23 00:27
2006.09.10
Модули


15-1155703959
MASTAFA
2006-08-16 08:52
2006.09.10
Скомпилированный файл справки. Как сделать?





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