|
27.04.2023, 20:40 | #1 |
Участник
|
P.S. Я думаю, во всех таких случаях используется функция any2str().
__________________
// no comments |
|
28.04.2023, 07:55 | #2 |
Участник
|
Там все немного заморочнее
X++: static void Job287(Args _args) { str sDate; anytype aDate = 11\12\2023; str sReal; anytype aReal = 1024.5678; ; sDate = aDate; sReal = aReal; info(strFmt("sAdate = %1", sDate)); info(strFmt("aDate = %1", aDate)); info(strFmt("sReal = %1", sReal)); info(strFmt("aReal = %1", aReal)); // info(strFmt("any2str(aDate) = %1", any2str(aDate))); // ошибка // info(strFmt("any2str(aReal) = %1", any2str(aReal))); // ошибка } Цитата:
sAdate = 2023.12.11
aDate = 11.12.2023 sReal = 1024.5678 aReal = 1 024,57 А any2str - никакого реального преобразования не делает. Эта функция - что-то типа Debug::assert() - только она проверяет что реально передана переменная строкового типа иначе выбрасывает исключение. Ну и конечно подсказывает компилятору какой имелся в виду тип, подавляя тем самым предупреждения компилятора. Поэтому для реального преобразования в строку мы писали свою функцию. strFmt не всегда подходит из-за строгого округления до 2 знаков после запятой для вещественных чисел. Последний раз редактировалось Logger; 28.04.2023 в 07:58. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
28.04.2023, 17:25 | #3 |
Участник
|
Цитата:
У меня целая иерархия классов-атрибутов. По классу почти для каждого базового типа. В нужном месте [классатрибутСпараметрами] и его взрослая обработка. |
|
|
За это сообщение автора поблагодарили: Logger (1). |