Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
2-1250832350
GlTech
2009-08-21 09:25
2009.10.18
Указатели


15-1247399936
xayam
2009-07-12 15:58
2009.10.18
Обновился DMSearch (поисковик по делфимастеру)


2-1250067700
AndrewG
2009-08-12 13:01
2009.10.18
TRichViewEdit & addict


2-1250845434
Priest
2009-08-21 13:03
2009.10.18
RS-232 возвращает данные в формате float. Как перевести?


1-1219816903
Iris
2008-08-27 10:01
2009.10.18
MonthCalendar




   Наверх