Главная страница
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.01 c
1-1217338897
9899100
2008-07-29 17:41
2009.10.18
WindowState


2-1250150825
tytus
2009-08-13 12:07
2009.10.18
SNMP и Delphi 2009 - непонятки с указателем


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


1-1213341676
dmitry_12_08_74
2008-06-13 11:21
2009.10.18
THotKey нормально не работаетс горячими клавишами типа Win...


2-1250853074
Начинающий1234
2009-08-21 15:11
2009.10.18
DrawItem (TListBox)