Страница 1 из 1
Формат Int64 в домашних условиях
Добавлено: 28 Сентябрь 2023, 7:43
Игорь Столяров
Привет всем !
Правильно ли я понимаю, что для приёма данных при парсинге полей
в формате Int64 у нас сейчас нет других вариантов, кроме:
Код: Выделить всё
V1 Decimal(19)
V2 CString(20) ! Как-то уже совсем тупо :(
V3 Ждать Clarion 12
?
Формат Int64 в домашних условиях
Добавлено: 28 Сентябрь 2023, 11:27
ingasoftplus
посмотрите на зачатки в equates.clw
Код: Выделить всё
! 64 bits integers
OMIT('***',_BUILTIN_I64_)
INT64 GROUP,TYPE
lo ULONG
hi LONG
END
UINT64 GROUP,TYPE
lo ULONG
hi ULONG
END
! ***
и в i64.INC
это уже есть в clarion 10 и 11.1 (по крайней мере)
Формат Int64 в домашних условиях
Добавлено: 28 Сентябрь 2023, 12:02
Игорь Столяров
Я видел эти зачатки, но что-то мне подсказывает, что тут другая история (для передачи параметров в сторонние DLL).
А вот такое присвоение точно не прокатит - т.к. транслятор будет считать такой Group() 8-ми байтовой строкой:
Код: Выделить всё
MyBigInt Group(INT64).
Code
MyBigInt = 123456789012345
Message(MyBigInt)
Формат Int64 в домашних условиях
Добавлено: 28 Сентябрь 2023, 15:27
Дед Пахом
Есть же libsrc\win\i64.INC.
Формат Int64 в домашних условиях
Добавлено: 28 Сентябрь 2023, 15:42
Игорь Столяров
Дед Пахом писал(а): ↑28 Сентябрь 2023, 15:27
Есть же libsrc\win\i64.INC.
Это набор функций для обмена и операций в формате Int64 ... а мне нужно хранение больших чисел.
Я уже увидел, что обмен в Int64 идёт через DECIMAL ... но DECIMAL не подходит для ключей в Pervasive.SQL.
Поэтому, видимо, остаётся только CSTRING, тем более что упорядочивание по Int64 мне не нужно.
(или можно записывать строки в формате "@N-020")
Формат Int64 в домашних условиях
Добавлено: 04 Октябрь 2023, 7:22
Игорь Столяров
Вообще, конечно, чудны творения рук детей твоих Господи ...
Если верить справке Clarion 11.1, то получается, что значения по типам переменных:
Код: Выделить всё
Long: -2,147,483,648 to 2,147,483,647
ULong: 0 to 4,294,967,295 ! <- OK !
Но !
Int64: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
UInt64: 0 to 9,223,372,036,854,775,807 ! <- Why ?!
Здесь уже логика вышла из чата ...
Формат Int64 в домашних условиях
Добавлено: 04 Октябрь 2023, 15:51
kreator
Формат Int64 в домашних условиях
Добавлено: 04 Октябрь 2023, 21:11
Игорь Столяров
kreator писал(а): ↑04 Октябрь 2023, 15:51
Скорее всего описались
Зная как работает SV - могли и обкакаться ...
В Clarion'e ведь реализован не нативный INT64, а притянутый за ухи костыль-спарка из двух LONG ...
Ждём C12, а пока юзаем вместо INT64 традиционный DECIMAL(20) - в принципе всё работает.
Формат Int64 в домашних условиях
Добавлено: 05 Октябрь 2023, 15:09
kreator
Игорь Столяров писал(а): ↑04 Октябрь 2023, 21:11
Ждём C12, а пока юзаем вместо INT64 традиционный DECIMAL(20) - в принципе всё работает.
Тогда уж C2024.
Формат Int64 в домашних условиях
Добавлено: 05 Октябрь 2023, 15:18
Игорь Столяров
kreator писал(а): ↑05 Октябрь 2023, 15:09
Тогда уж C2024.
Возможно. Здесь важно, что бы INT64 был полноценным форматом - в т.ч. поддерживался драйверами БД ...