Главная страница
    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.47 MB
Время: 0.117 c
14-1103203292
Игорь Шевченко
2004-12-16 16:21
2005.01.09
Министр обороны призвал "прекратить дебилизацию" россиян


1-1103614782
Cosinus
2004-12-21 10:39
2005.01.09
Вопрос по TObject...


1-1103524894
first_aid
2004-12-20 09:41
2005.01.09
Глюк события TListView.OnColumnClick


1-1103224439
Der Juvas
2004-12-16 22:13
2005.01.09
Обращение к порту и получение HTML страницы


1-1103756312
Izid
2004-12-23 01:58
2005.01.09
Хелп с реестром





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