Стартовая страница › Форумы › Понять, как работает ПО › Формулы › Число в текст
- В этой теме 7 ответов, 3 участника, последнее обновление 4 года, 6 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
13.01.2022 в 14:55 #21416
artem_on
УчастникЗдравствуйте!
Для канала пишу в поле Формула:
Cnl>0 ? «Зима» : «Лето»
Ставлю галочку Использовать формулу.
Ставлю тип: Текст Unicode.
Формула компилируется сервером без ошибки, но на веб-странице в представлении вместо текста — пустое поле.13.01.2022 в 15:53 #21417Romiros
УчастникФормула всегда возвращает double. Используйте формулу Cnl>0 ? 0 : 1.
В справочниках в таблице «Размерности» создайте свою размерность с обозначением Зима;Лето. Каналу укажите данную размерность и Формат — Текст Перечисление13.01.2022 в 16:01 #21418artem_on
УчастникСпасибо за ответ, а зачем тогда вообще существует формат «Текст Unicode»? Насколько я успел понять, читая ответы на похожие вопросы, в формуле все-таки можно получить 8 байт текста: 8 символов для ASCII и 4 символа для Unicode…
13.01.2022 в 16:31 #21419Romiros
УчастникЕсли четырех символов достаточно и есть такая необходимость , можно написать формулу декодирования, например, как реализовано в самой скаде:
public static double EncodeUnicode(string s)
{
byte[] array = new byte[8];
int charCount = Math.Min(4, s.Length);
Encoding.Unicode.GetBytes(s, 0, charCount, array, 0);
return BitConverter.ToDouble(array, 0);
}Unicode можно ставить если сразу от драйвера приходит в закодированном формате. Я так использую при получении имени прибора или дата время
13.01.2022 в 17:21 #21420
MikhailМодератор> а зачем тогда вообще существует формат «Текст Unicode»?
Для случаев, когда заранее неизвестен перечень возможных значений.
В остальных случаях эффективнее использовать перечисления.13.01.2022 в 18:48 #21421artem_on
Участник@Romiros, О! Спасибо за готовую формулу.
{
byte[] array = new byte[8];
…
}А утечки памяти тут не будет? Явно освобождать указатель на массив в конце функции не требуется? Или тут сборщик мусора сработает в этих ваших .NET?
13.01.2022 в 21:16 #21422Romiros
УчастникЭто не моя формула, все Михаила. По идее сборщик сам всё сделает, но точнее Михаил скажет. Он выше написал, что эффективнее использовать заранее известный текст перечисления.
А вообще проверяйте и если не трудно старайтесь отписываться о результатах, это потом многим помогает. Знаю по себе, каждый раз все приходится все делать практически заново. Быстро забывается. А так зашёл на форум и есть готовое решение.14.01.2022 в 16:52 #21425
MikhailМодераторВ C# сборка мусора происходит автоматически.
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.