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

Вниз

Переведите пожалуйста с паскаля на php   Найти похожие ветки 

 
DSKalugin ©   (2009-08-19 14:47) [0]

Суть в том что вещественное число хранится(разложено) в 3х полях,
а эта функция собирает его в нормальное представление

function BtrMoney2extended(lo, hi:LongInt; pp: SmallInt): Extended;
Type
 BtrMoney = record
   lo,hi : LongInt;
   pp : SmallInt;
 end;
var
 Sum: BtrMoney;
begin
 Sum.Lo := lo;
 Sum.Hi := hi;
 Sum.Pp := pp;
 Move(Sum, Result, Sizeof(Sum));
 Result:=Result/100;
end;


 
ggg ©   (2009-08-19 18:40) [1]

А как это работает? Sizeof(Sum) = 12, Sizeof(Extended) = 10.


 
Palladin ©   (2009-08-19 18:45) [2]

а оно тупо не работает )


 
Jeer ©   (2009-08-19 18:49) [3]

Не вопрос перевести и чтобы оно также тупо не работало.
Но зачем ? :)


 
Холивар   (2009-08-19 19:18) [4]


> ggg ©   (19.08.09 18:40) [1]
>
> А как это работает? Sizeof(Sum) = 12


Два последние байта - выравнивание 32 бита. А так все правильно (4 + 4 + 2) + 2 ничейных байта выравнивания до кратного 4-м. На 64-битном компиляторе(например fpc) было бы требование кратности 8-ми по-умолчанию


 
Palladin ©   (2009-08-19 19:33) [5]


> [4] Холивар   (19.08.09 19:18)

То есть ты считаешь правильным Move в переменную размером в 10, 12ти байт?


 
Холивар   (2009-08-19 19:52) [6]

> Palladin ©   (19.08.09 19:33) [5]
>
> То есть ты считаешь правильным Move в переменную размером
> в 10, 12ти байт?


Нда, тонкостей не заметил.

Вот так правильнее будет.
Move(Sum, Result, Sizeof(Result));


 
DSKalugin ©   (2009-08-20 09:34) [7]

Спасибо за поправку, но функция даже не смотря на это работала правильно на практике  

> Move(Sum, Result, Sizeof(Result));


 
Palladin ©   (2009-08-20 09:39) [8]


> Спасибо за поправку, но функция даже не смотря на это работала
> правильно на практике  

Ты хоть понимаешь что она в принципе не могла работать правильно?
По встречной полосе тоже ездить можно.



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
2-1250324929
Sly_laban
2009-08-15 12:28
2009.10.18
Fast Report -литература


2-1250782279
istok20
2009-08-20 19:31
2009.10.18
createservice вызывает падение rpc...


15-1250571823
Вопрощающий
2009-08-18 09:03
2009.10.18
GLScene и Delphi2006 (for Win32)


2-1250608683
sanx
2009-08-18 19:18
2009.10.18
Заставить memo воспринимать разделитель строки не только #13#10


2-1250177404
Del
2009-08-13 19:30
2009.10.18
Указатели