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

Вниз

Есть ли стандартная функция для получения нижнего слова?   Найти похожие ветки 

 
Cosinus ©   (2004-12-21 15:12) [0]

То есть что то типа HiWord(Value:longword):word?


 
Anatoly Podgoretsky ©   (2004-12-21 15:30) [1]

Может заднего?
LongRec


 
begin...end ©   (2004-12-21 16:42) [2]

> Cosinus ©   (21.12.04 15:12)

> Есть ли стандартная функция для получения нижнего слова?

Стандартной функции, предназначенной именно для этого, нет.

Тем не менее, есть вариантные записи ([1]), директива absolute, функция CopyMemory, тип Pointer и т.д.


 
begin...end ©   (2004-12-21 19:18) [3]

> Cosinus ©   (21.12.04 15:12)

Ну как, разобрался?

Если нет, то вот несколько примеров (получение старшего слова):

function HiWord1(Value: Longword): Word;
begin
 Result := LongRec(Value).Hi
end;

function HiWord2(Value: LongWord): Word;
var
 Val: array [0..1] of Word absolute Value;
begin
 Result := Val[1]
end;

function HiWord3(Value: LongWord): Word;
begin
 Result := (Value and $FFFF0000) shr 16
end;

function HiWord4(Value: LongWord): Word;
begin
 Result := PWord(Cardinal(@Value) + 2)^
end;

function HiWord5(Value: LongWord): Word;
begin
 CopyMemory(@Result, Pointer(Cardinal(@Value) + 2), 2)
end.


 
VaDima ©   (2004-12-21 19:20) [4]

LoWord := PWORD(@DWordValue)^


 
VMcL ©   (2004-12-21 20:21) [5]

>>Cosinus ©  (21.12.04 15:12)

Для нижнего слова функция не нужна.

var
 a: Word;
 b: LongWord;
//...
 a := Word(b);


 
begin...end ©   (2004-12-21 20:25) [6]

Так, а у меня в [3] лишнее: в HiWord3 вместо Result := (Value and $FFFF0000) shr 16 можно просто Result := Value shr 16.


 
palva ©   (2004-12-22 10:07) [7]

А в Free Pascal функция Hi работает по-другому.

Hi returns the high byte or word from X, depending on the size of X. If the size of X is 4, then the high word is returned. If the size is 2 then the high byte is returned. Hi cannot be invoked on types of size 1, such as byte or char.

По-моему, это логичней.


 
Cosinus ©   (2004-12-22 10:31) [8]


> begin...end ©   (21.12.04 19:18) [3]

Спасибо, но у меня так и было сделано. Меня просто интересовала стандартная.. Но все равно спасибо :))

> VMcL ©   (21.12.04 20:21) [5]

Естественно интересовало и "верхнее".

To All.
На самом деле я поторопился вчера вопрос задать. Вроде в справке рылся - и ничего не нашел, а сегодня с утра как на подбор :)The HIWORD macro retrieves the high-order word from the given 32-bit value.

WORD HIWORD(

   DWORD dwValue // value from which high-order word is retrieved
  );

The LOWORD macro retrieves the low-order word from the given 32-bit value.

WORD LOWORD(

   DWORD dwValue // value from which low-order word is retrieved
  );

HiLoWords
Unit: IdDNSResolver
Represents data with High and Low Word values.

HiLoWords = record
 HiWord: Word;
 LowWord: Word;
 end;



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

Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.06 c
14-1103058925
Pat
2004-12-15 00:15
2005.01.09
ООП vs структурное программирование


1-1103639617
Bobby Digital
2004-12-21 17:33
2005.01.09
Cursor


14-1103093072
Семен Сорокин
2004-12-15 09:44
2005.01.09
Помогите найти человека в Москве!


14-1103625352
Kolan
2004-12-21 13:35
2005.01.09
Среда как electronic worck bench


9-1095342039
WondeRu
2004-09-16 17:40
2005.01.09
GLScene без TForm





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