Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

какой аналог паскалевского System.Move в Net? [WinXP]


DSKalugin ©   (19.08.11 12:37

Пытаюсь сделать 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 ближе всего


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо