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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2010, 11:12   #1
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию Совместимость типов с разными названиями.

У меня в проэкте импользуется много разных модулей связаных с физикой и математикой. И у каждого модуля свой тип точки: у одного:
Код:
type
  zglPPoint2D = ^zglTPoint2D;
  zglTPoint2D = record
    x, y : Single;
end;
у другого:
Код:

Float = Single;
cpFloat = Float;
  PcpVect = ^cpVect;
  cpVect = record
    x             : cpFloat;
    y             : cpFloat;
  end;
Впринципе типы zglTPoint2D и cpVect одинакоыве, они включают X,Y:single, но при попытке использовать cpVect в процедуре для zglTPoint2D возникает ошибка
Цитата:
[Error] GR_Levels.pas(371): Incompatible types: 'zglTPoint2D' and 'cpVect'
Как указать компилятору чтоб он не считал это за ошибку?
Вадим Буренков вне форума Ответить с цитированием
Старый 17.01.2010, 11:32   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
type zglTPoint2D = cpVect;
eoln вне форума Ответить с цитированием
Старый 17.01.2010, 13:21   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Создайте функу-конвертор типа Blablabla=Convert(Vect : cpVect) : zglTPoint2D;
А в ней танцуйте с битами.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.01.2010, 21:35   #4
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
type zglTPoint2D = cpVect;
Я знаю что так можно, просто интересовался можно ли обойти это ограничение. Например несовместимость PcpVect и cpVect решается знаком "@" перед переменной.
Цитата:
функу-конвертор
Я уже создал:
Код:
function cpVectTozglPoint(cpv:cpVect):zglTPoint2D;
begin
result.x:=cpv.x;
result.y:=cpv.y;
end;

function zglPointTocpVect(zglP:zglTPoint2D):cpVect;
begin
result.x:=zglP.x;
result.y:=zglP.y;
end;
Вобщем спасибо за ответы.
Вадим Буренков вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выпадающий список с названиями листов книги transkriptsiya Microsoft Office Excel 9 28.11.2013 18:55
Создать файл с названиями мировых столиц. Вывести на экран столицы на букву А... ЛиК@ Помощь студентам 1 29.09.2009 10:10
Устранить не совместимость типов Persik Общие вопросы Delphi 2 09.09.2009 12:13
Фотографии с названиями и подписями Rashanea Microsoft Office Word 11 22.01.2009 23:04
Совместимость типов DeDoK Общие вопросы Delphi 2 06.05.2008 21:28