Преобразование SQL Server Numeric в IDL: Решение Компоновки КомпонентовDelphi , Базы данных , SQLПрежде чем приступить к ответу на поставленный вопрос, важно уточнить, что IDL (Interface Definition Language) используется для описания интерфейсов в технологии COM (Component Object Model), которая широко применяется в средах, использующих объектно-ориентированный подход, например, в разработке под Delphi и Pascal. Проблема заключается в том, как представить тип данных Подтвержденный ответВ COM типовой системе есть следующие типы для представления чисел:
Таким образом, ни один из этих типов не позволяет достичь необходимой точности в 38 значащих цифр. Максимально возможное представление целого числа в Для работы с высокоточными числами в Delphi можно использовать BSTR (широкий текстовый тип), который позволяет хранить любое количество цифр, но уже в виде текста. Это потребует использования специализированной библиотеки для обработки чисел в формате BCD (бинарно-цифровом коде), поскольку ни один из встроенных типов Delphi, включая Другой вариант (предложенный Ondrej) - использование массива байтов. COM-массив байтов может быть менее удобным в работе и менее эффективным по скорости, хотя и экономит память. В качестве кодирования можно использовать BCD. Возможно, вы найдете библиотеки для работы с BCD как с одной, так и с другой стороны COM-объекта. Пример кода на Object Pascal
Этот пример демонстрирует, как преобразовать ВыводыДля преобразования типа Контекст запроса связан с преобразованием данных типа `numeric(38,0)` из SQL Server в типы данных, используемые в IDL для компонентов COM, что связано с ограничениями точности и представления чисел в COM. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |