Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2016, 20:26   #1
Patsukin
Новичок
Джуниор
 
Регистрация: 26.11.2015
Сообщений: 2
По умолчанию Перевести встроенный тип данных в свой одним словом

Создал тип TCoord с данными X и Y в Real, нужен механизм перевода этого типа в TPoint одним словом - по принципу StrToInt, FloatToInt и пр. Написал команду скажем TCoordToTpoint, и переводишь строкой TCoordToTpoint(a).
Если процедура работает с Integer с такими параметрами:
Код:
Procedure Qwerty(var a,b,c,d:Integer);
то в нее можно без проблем передать Real или Str, написав так:
Код:
procedure ABC;
var
...
begin
Qwerty(x,y,floattoint(z),strtoint('123'));
Вот именно этот метод перевода типов одним словом меня и интересует, хочу написать свой если это возможно.
Patsukin вне форума Ответить с цитированием
Старый 19.03.2016, 20:31   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну, а свой тип данных кто будет показывать?
Цитата:
FloatToInt
Это что за монстрик?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.03.2016, 20:36   #3
Patsukin
Новичок
Джуниор
 
Регистрация: 26.11.2015
Сообщений: 2
По умолчанию

http://tmaplatform.ru/page/help/api/...ert/floattoint
Patsukin вне форума Ответить с цитированием
Старый 19.03.2016, 20:46   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Угу. В делфи для этого trunc есть. И ни каких родных FloatToStr
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.03.2016, 20:49   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Создал тип TCoord с данными X и Y в Real, нужен механизм перевода этого типа в TPoint
Ой, да ладно! Я тя умоляю! Загляни в модуль types.pas. Там много вкусного.
Код:
  TPointF = record
    class function Create(const AX, AY: Single): TPointF; overload; static; inline;
    class function Create(const APoint: TPoint): TPointF; overload; static; inline;
    class operator Add(const APoint1, APoint2: TPointF): TPointF;
    class operator Subtract(const APoint1, APoint2: TPointF): TPointF;
    class operator Equal(const APoint1, APoint2: TPointF): Boolean;
    class operator NotEqual(const APoint1, APoint2: TPointF): Boolean;
    class operator Implicit(const APoint: TPoint): TPointF;
    class operator Negative(const APoint: TPointF): TPointF;
    class operator Multiply(const APoint1, APoint2: TPointF): TPointF;
    class operator Multiply(const APoint: TPointF; const AFactor: Single): TPointF;
    class operator Multiply(const AFactor: Single; const APoint: TPointF): TPointF;
    class operator Divide(const APoint: TPointF; const AFactor: Single): TPointF;
    class function PointInCircle(const Point, Center: TPointF; const Radius: Integer): Boolean; static; inline;
    class function Zero: TPointF; inline; static;
    function Distance(const APoint: TPointF): Single;
    function CrossProduct(const APoint: TPointF): Single;
    function DotProduct(const APoint: TPointF): Single; inline;
    procedure Offset(const APoint: TPointF); overload; inline;
    procedure Offset(const ADeltaX, ADeltaY: Single); overload; inline;
    procedure Offset(const APoint: TPoint); overload; inline;
    procedure SetLocation(const X, Y: Single); overload; deprecated 'Use ":=" assignment instead';
    procedure SetLocation(const P: TPointF); overload; deprecated 'Use ":=" assignment instead';
    procedure SetLocation(const P: TPoint); overload; deprecated 'Use ":=" assignment instead';
    function Subtract(const Point: TPointF): TPointF; overload; deprecated 'Use TPointF.Offset instead';
    function Subtract(const Point: TPoint): TPointF; overload; deprecated 'Use TPointF.Offset instead';
    function Add(const Point: TPointF): TPointF; overload; deprecated 'Use TPointF.Offset instead';
    function Add(const Point: TPoint): TPointF; overload; deprecated 'Use TPointF.Offset instead';
    function Scale(const AFactor: Single): TPointF; deprecated;
    function EqualsTo(const Point: TPointF; const Epsilon: Single = 0): Boolean;
    function IsZero: Boolean;
    function Ceiling: TPoint; // <------------------------------------------
    function Truncate: TPoint; // <------------------------------------------
    function Round: TPoint; // <------------------------------------------
    function Normalize: TPointF;
    function Length: Single;
    function Rotate(const AAngle: Single): TPointF;
    function Reflect(const APoint: TPointF): TPointF; inline;
    function MidPoint(const APoint: TPointF): TPointF; inline;
    function AngleCosine(const APoint: TPointF): Single;
    function Angle(const APoint: TPointF): Single;
    case Integer of
      0: (V: TPointFType;);
      1: (X: Single;
          Y: Single;);
  end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 20.03.2016, 00:11   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Patsukin Посмотреть сообщение
Создал тип TCoord с данными X и Y в Real, нужен механизм перевода этого типа в TPoint одним словом - по принципу StrToInt, FloatToInt и пр. Написал команду скажем TCoordToTpoint, и переводишь строкой TCoordToTpoint(a).
Если процедура работает с Integer с такими параметрами:
Код:
Procedure Qwerty(var a,b,c,d:Integer);
то в нее можно без проблем передать Real или Str, написав так:
Код:
procedure ABC;
var
...
begin
Qwerty(x,y,floattoint(z),strtoint('123'));
Вот именно этот метод перевода типов одним словом меня и интересует, хочу написать свой если это возможно.
Этот "метод перевода" называется функция (function). Пиши, какие проблемы?
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать свой тип данных в SQL? brans SQL, базы данных 4 01.12.2011 19:53
Свой тип данных korand Общие вопросы Delphi 6 01.04.2011 20:37
Вопрос по MS Visual C++ : Свой тип данных Eminem Помощь студентам 15 17.01.2011 04:05
Как мне создать свой тип данных PilGrim Общие вопросы .NET 1 05.11.2008 19:12
Свой тип данных в Delphi - сверх длинные числа - хранение в переменных размером до 1 MB KLaiM Общие вопросы Delphi 9 16.06.2007 09:13