-
Пытаюсь сделать DLL в Dephi Prism на основе исходников Delphi7
namespace Project1;
interface
uses
System;
type
BtrMoney = record
lo,hi : System.Int32;
pp : System.Int16;
end;
type
ClassBtrMoney = public class
public
class method BtrMoney2extended(lo, hi: System.Int32; pp: System.Int16): Extended;
end;
implementation
class method ClassBtrMoney.BtrMoney2extended(lo, hi: System.Int32; pp: System.Int16): Extended;
var Sum:BtrMoney;
begin
Sum.Lo := lo;
Sum.Hi := hi;
Sum.Pp := pp;
System.Move(Sum, Result, Sizeof(Sum));
Result:=Result/100;
end;
end.
пишет unknown identifier "System.Move"
-
Хммммм, попробуй воспользоваться рекордом с инвариантыми полями, например: type
_LARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: Longint);
1: (
QuadPart: LONGLONG);
end;
-
Хм, а на какой .NETовский тип отображается Extended ?? Ты уверен, что это не синоним для Double (соответсвено 8байтовый)?
-
Если бы столь странными манипуляциями пришлось бы заниматься мне и на C#, то я бы увидел как минимум 3 выхода (если, конечно, не учитывать, что вещественного типа данных размером в 10 байт в .net нету): 1) использовать неуправляемый код, работу с указателями, думаю комментарии излишни 2) использовать маршаллинг, только сначала стоит правильно выровнять структуру (StructLayout(LayoutKind.Explicit), например). Создать вторую структуру одним полем нужного типа, а потом Marshal.StructureToPtr и обратно 3) битовые операции тоже никто не отменял, и, думаю, комментарии и здесь излишни. Больше решений так сразу не пришло, но я все равно не знаю, что есть тип Extended в .Net
-
> что есть тип Extended в .Net
Decimal ближе всего
|