А Вам зачем?
Глупые вопросы
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Глупые вопросы
В окне есть Rtf-контрол:
В ?StrVal записываю юникодовскую строку -> крякизубры.
Вставка содержимого этой строки в TEXT через клипбоард -> всё нормально.
В чём разница?
Код: Выделить всё
...
TEXT,AT(15,228,182,27),USE(?StrVal),BOXED,TRN,FLAT,VSCROLL,FONT('Times New Roman',11,,,CHARSET:CYRILLIC),RTF(TEXT:FIELD)
...
Вставка содержимого этой строки в TEXT через клипбоард -> всё нормально.
В чём разница?
C10, Win10x64
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Глупые вопросы
Наверное есть промежуточный шаг: записываю юникодовскую строку -> Clarion посылает в контрол строку в ANSI кодировке -> крюкожабры
С уважением, ДП
Глупые вопросы
А версию используемого в кларионе RTF-контрола как-нибудь можно выяснить?
C10, Win10x64
-
- ✯ Ветеран ✯
- Сообщения: 4982
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Глупые вопросы
Если верить хелпу, всё зависит от файла RichEdxx.DLL в системном каталоге Винды. Другое дело - что нам с этого?
We are hard at work… for you.
Глупые вопросы
Версия 3.0, в MS пишут:
Значит опять SendMessage.UTF-8 RTF This is recommended for cutting, copying, and pasting operations.
C10, Win10x64
Глупые вопросы
Ну как же можно напороться!:
Код: Выделить всё
Program
Map.
bw long(134)
pf long(24)
st long
Code
st = ( ( (bw * pf) + 31 ) / 32 ) * 4 !!!! st = 405
message(st)
Return
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7372
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Глупые вопросы
С точки зрения математики - всё верно.
Проблема в том, что это упрощённый вариант алгоритма расчёта размера буфера.
Почему бы не использовать нормальный (из FreeImage) ?
Проблема в том, что это упрощённый вариант алгоритма расчёта размера буфера.
Почему бы не использовать нормальный (из FreeImage) ?
Код: Выделить всё
! Calculate the size of the image data(accounts for 32 bit alignment of scan lines) {0FFFFFFE0h = "~31"}
nImageSize = ABS(bih.biHeight) * BShift( Band( ((bih.biWidth * bih.biBitCount) + 31 ) , 0FFFFFFE0h), -3)
За теми кто отстал - не возвращаться. (С) Кодекс
Глупые вопросы
Да не нужны мне эти формулы, своих хватает.Игорь Столяров писал(а): ↑25 Февраль 2020, 22:49 С точки зрения математики - всё верно.
Проблема в том, что это упрощённый вариант алгоритма расчёта размера буфера.
Почему бы не использовать нормальный (из FreeImage) ?
КОД: ВЫДЕЛИТЬ ВСЁ
! Calculate the size of the image data(accounts for 32 bit alignment of scan lines) {0FFFFFFE0h = "~31"}
nImageSize = ABS(bih.biHeight) * BShift( Band( ((bih.biWidth * bih.biBitCount) + 31 ) , 0FFFFFFE0h), -3)
Вопрос стоит почему результат 405.
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7372
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Глупые вопросы
Извините ! Я думал Вас интересует причина …
Бобина-то считает всё правильно, по Вашему примеру (использовал калькулятор):
(134 * 24) + 31 = 3247
3247 / 32 = 101.46875
101.46875 * 4 = 405.875
Long = 405.875 = 405
К какой именно строке расчёта примера стоит вопрос ?
За теми кто отстал - не возвращаться. (С) Кодекс
Глупые вопросы
Если использовать калькулятор, то использовать не "Инженерный", а "Программист"
Игорь Столяров писал(а): ↑25 Февраль 2020, 23:38 К какой именно строке расчёта примера стоит вопрос ?
Результат должен быть однозначен - 404.
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7372
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Глупые вопросы
Не, у меня обычный, на батарейках.
Просто выведите по шагам расчёт примера в Clarion - получите то же самое …
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Глупые вопросы
Промежуточные вычисления хранятся в дробном виде:
Clarion has a Binary Coded Decimal (BCD) library of operations and procedures that execute in a manner similar to the manner in which decimal arithmetic is performed on paper. These operations use internal intermediate values with 31 digits accuracy on both sides of the decimal point.
С уважением, ДП
Глупые вопросы
Я так и понял, что придём к внутренним преобразованиям.
Но от этого не легче, 405 это не 404, выражение вычисляется неверно.
Мне что теперь, каждую формулу с целочисленной арифметикой проверять вручную или , как тут советовали, писать столбиком?:
Кстати, примерчик, что привёл выше, в том же кларионе, но в сишном исполнении, даёт правильный результат.
Но от этого не легче, 405 это не 404, выражение вычисляется неверно.
Мне что теперь, каждую формулу с целочисленной арифметикой проверять вручную или , как тут советовали, писать столбиком?:
Код: Выделить всё
st = bw * pf
st += 31
st /= 32
st *= 4
C10, Win10x64