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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2010, 18:05   #1
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию Для решения проблемы конверсии типов из разных сред нужно крохотнуюю DLL

Товарищи - я сейчас пишу программу по расчету лазерного резонатора, все крутится вокруг динамической библиотеки написанной много раньше другим человеком, который вней реализовал очень хитрые и сложные численные методы (писал на Delphi), встраиваю эту библиотеку в свой проэкт (работаю с MVS C++). И вот натнулся на такую проблему - вводным параметром в некотрые функиции этой библиотеки есть аргумент типа Extended - эта переменная занимает 10 байт и неимеет аналога в MVS C++ что меня очень огорчает... Всязи с этим прозьба людям знающим Delphi, для создания аналогичного типа в С++ мне бы очень помогла динамическая библиотека с парой однотипных функий следуюющего содержания: просто принимающая аргумент типа Extended и выводящая его на консоль и такая же но с типом real.
Аналог того что надо сделять на С++.
Код:
void func(double Z)
{
std::cout<<Z<<std::endl;
}
Очень надо, ато я Delphi незнаю практически, а создать там DLL темболее.
Заранее благодарен
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 10.02.2010, 10:39   #2
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

Ну помогите же мне, работы для человека знающего Delphi 2 минуты, лиш вывести значение переменной на экран.
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 10.02.2010, 13:44   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

http://programmersforum.ru/showthread.php?t=25663

asm не поможет ?
Сам Delphi делает так:

Код:
var E:Extended;
    D:Double;
begin
   E := -1.25e+1;
   //D := E;
   asm
      fld tbyte ptr E
      fstp qword ptr D
      wait
   end;
alexBlack вне форума Ответить с цитированием
Старый 10.02.2010, 14:34   #4
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

Да нет же, у меня иная задача, создать тип подобный extended. И мне нужна эта динамическая библиотека для того чтобы проверить созданный тип. Я создаю переменную этого типа и присваиваю значение - скармливаю ее фунцкции в DLL-ке, если на консоли увижу правильное значение значит тип создан правильно.
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи
Psionic вне форума Ответить с цитированием
Старый 10.02.2010, 14:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если мне память предков не изменяет, в си есть long double - оно же Extended.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2010, 14:48   #6
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

Компиляторы майкрософт long double приравнивают к простому double, итого имеем 8 байт вместо положенных 10. Я решил реализовать свой тип данных, аналогичный.
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи

Последний раз редактировалось Psionic; 10.02.2010 в 14:51.
Psionic вне форума Ответить с цитированием
Старый 10.02.2010, 15:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Компиляторы майкрософт long double приравнивают к простому double
Опа!!! Не вижу логики такого приравнивания...
Ты уверен в этом?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2010, 16:52   #8
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
По умолчанию

http://msdn.microsoft.com/en-us/libr...15(VS.71).aspx - вот, msdn упрямая штука, в крайнем случае можно sizeofом в студии проверить. Ну соберите ктонить DLL, не заставляйте меня еще и delphi учить. ;(
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи

Последний раз редактировалось Psionic; 10.02.2010 в 16:55.
Psionic вне форума Ответить с цитированием
Старый 10.02.2010, 16:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ну соберите ктонить DLL
Сорри, я в Си не силен )
Цитата:
msdn упрямая штука
Не ожидал от них такого хамства...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.02.2010, 17:15   #10
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Опа!!! Не вижу логики такого приравнивания...
Ты уверен в этом?
Аболютно
Код:
	int sizeLD = sizeof(long double);
	int sizeD = sizeof(double);
Изображения
Тип файла: png sizeof.PNG (2.7 Кб, 61 просмотров)
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
bass.dll и windows 7 : проблемы и решения Garacio_cain Мультимедиа в Delphi 6 25.10.2009 19:36
Програмка для отслеживания разных типов в памяни ПК. Трабл с типом BOOL eXalleR- Общие вопросы C/C++ 6 13.10.2009 15:55
функция вычисления сред.арифм и сред.геометр Demigoddess Общие вопросы C/C++ 2 15.05.2009 20:24
как связать поля разных типов doncova1 Microsoft Office Access 5 11.03.2008 00:15
Перевод переменных разных типов LeoN Общие вопросы Delphi 3 23.03.2007 00:15