Конференция ".Net" » какой аналог паскалевского System.Move в Net? [WinXP]
 
  • DSKalugin © (19.08.11 12:37) [0]
    Пытаюсь сделать 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
       //[UnmanagedExport('BtrMoney2extended'), System.Runtime.InteropServices.CallingConvention.StdCall]
       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"
  • Cobalt © (19.08.11 17:55) [1]
    Хммммм, попробуй воспользоваться рекордом с инвариантыми полями, например:
    type
     _LARGE_INTEGER = record
       case Integer of
       0: (
         LowPart: DWORD;
         HighPart: Longint);
       1: (
         QuadPart: LONGLONG);
     end;

  • jack128_ (26.08.11 11:54) [2]
    Хм, а на какой .NETовский тип отображается Extended ?? Ты уверен, что это не синоним для Double (соответсвено 8байтовый)?
  • icelex © (29.08.11 17:10) [3]
    Если бы столь странными манипуляциями пришлось бы заниматься мне и на C#, то я бы увидел как минимум 3 выхода (если, конечно, не учитывать, что вещественного типа данных размером в 10 байт в .net нету):
    1) использовать неуправляемый код, работу с указателями, думаю комментарии излишни
    2) использовать маршаллинг, только сначала стоит правильно выровнять структуру (StructLayout(LayoutKind.Explicit), например). Создать вторую структуру одним полем нужного типа, а потом Marshal.StructureToPtr и обратно
    3) битовые операции тоже никто не отменял, и, думаю, комментарии и здесь излишни.
    Больше решений так сразу не пришло, но я все равно не знаю, что есть тип Extended в .Net
  • clickmaker © (07.11.11 13:33) [4]

    > что есть тип Extended в .Net

    Decimal ближе всего
 
Конференция ".Net" » какой аналог паскалевского System.Move в Net? [WinXP]
Есть новые Нет новых   [134427   +26][b:0][p:0.001]