Форум: "Прочее";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];
ВнизПереведите пожалуйста с паскаля на 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c