Глупые вопросы

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Глупые вопросы

Сообщение kreator »

seawolf писал(а):А экспортировать этот xml файл в какой-нибудь нормальный дизайнер (рисователь) схемы базы можно или это все может вращаться внутри clarion?
Куда, например?
Из словаря можно вызвать рисователь. Вернее так. В словаре есть встроенный рисователь.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Глупые вопросы

Сообщение Дед Пахом »

В отладчике есть возможность поменять шрифт (Setup|Options|Custom font), но выбор шрифта не сохраняется после закрытия отладчика. Искал во всяких INI, XML, в реестре, не нашёл где хранится шрифт, может кто знает? Если это вообще возможно.
С уважением, ДП
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar »

Дед Пахом писал(а): 15 Февраль 2017, 0:05В отладчике есть возможность поменять шрифт...
А кто-нибудь победил эту ситуацию?
C10, Win10x64
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar »

Кому интересно, подсунул Cladb.exe из C8 - вроде бы все настройки сохраняются.
C10, Win10x64
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar »

Всем привет.
Кто-нибудь разъяснит, почему объявление

Код: Выделить всё

any_val   ulong(3000000000)          ! или что-то, большее 2147483647
вызывает ругательство (Expression must be constant)?
C10, Win10x64
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Глупые вопросы

Сообщение Дед Пахом »

vic7tar писал(а): 04 Сентябрь 2018, 0:49почему объявление
Наверное потому, что где-то в коде компилятора есть что-то вроде

Код: Выделить всё

if defval > 2147483647
  throw "Expression must be constant"
end
[/code]
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Глупые вопросы

Сообщение Игорь Столяров »

vic7tar писал(а): 04 Сентябрь 2018, 0:49почему объявление
У меня другая версия: потому, что тип рабочих переменных компилятора для инициализации целочисленных значений: LONG.
А значит должно работать вот так:

Код: Выделить всё

any_val1     ulong(1500000000 + 1500000000)
any_val2     ulong(1000000000 * 3)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar »

Интересный поворот.
Т.е.:

Код: Выделить всё

any_val1     ulong(1500000000 + 1500000000)
any_val2     ulong(1000000000 * 3)
можно, и даже так можно:

Код: Выделить всё

any_val3     ulong(abs(1500000000 + 1500000000))
any_val4     ulong(1000000000 - 3)
а так нельзя:

Код: Выделить всё

any_val5     ulong(1000000000 / 2)
:idied:
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Глупые вопросы

Сообщение Игорь Столяров »

vic7tar писал(а): 04 Сентябрь 2018, 12:07Интересный поворот.
На самом деле, вполне логичный и ожидаемый поворот-то … ;)
В общем случае, результат деления целого на целое - это вещественное число (тип данных REAL).
Поэтому попытка присвоения результата такой операции в ULONG - некорректна. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar »

Игорь Столяров писал(а): 04 Сентябрь 2018, 12:52
vic7tar писал(а): 04 Сентябрь 2018, 12:07Интересный поворот.
На самом деле, вполне логичный и ожидаемый поворот-то … ;)
В общем случае, результат деления целого на целое - это вещественное число (тип данных REAL).
Поэтому попытка присвоения результата такой операции в ULONG - некорректна. :)
Это уже другой интересный поворот. Тогда это как работает?:

Код: Выделить всё

any_val6     ulong(4.0e1 * 2.5e4)
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Глупые вопросы

Сообщение Игорь Столяров »

vic7tar писал(а): 04 Сентябрь 2018, 16:03Это уже другой интересный поворот.
Как я понимаю: здесь таже беда, что и с функцией Choose(), т.е. тип результата определяется выполняемой операцией.
Деление - всегда возвращает результат в REAL, поэтому присвоении результата в ULONG - запрещено.
Компилятор эту аксиому знает.
Тип результата умножения зависит от типа данных аргументов, и срабатывает неявное преобразование типов данных.

Таких смешных примеров в Clarion с путаницей в неявных типах данных много, например:

Код: Выделить всё

  A# = 2  
  Message( Choose(A#,  10 / 3, 'арбуз'  )   )
Последний раз редактировалось Игорь Столяров 04 Сентябрь 2018, 18:29, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Глупые вопросы

Сообщение vic7tar »

Игорь Столяров писал(а): 04 Сентябрь 2018, 17:06
vic7tar писал(а): 04 Сентябрь 2018, 16:03Это уже другой интересный поворот.
Как я понимаю: здесь таже беда, что и с функцией Choose(), т.е. тип результата определяется выполняемой операцией.
Деление - всегда возвращает результат в REAL, поэтому присвоении результата в ULONG - запрещено.
Компилятор эту аксиому знает.
Тип результата умножения зависит от типа данных аргументов, и срабатывает неявное преобразование типов данных.

Таких смешных примеров в Clarion с путаницей в неявных типах данных много, например:

Код: Выделить всё

  A# = 2  
  Message( Choose(A#,  10 / 3, Format(10 / 3,@n12.3)  )   )
Т.е. при всех арифм. операциях кроме деления неявное преобразование срабатывает, так я понял? Ну а с этим как быть?:

Код: Выделить всё

any_val7     ulong(3.0e9)
Добился нужного результата через задницу и не по правилам.
А что в примере с choose не так, ну выдает 3.33, а что должно быть? С 'арбузом' пример был вроде подходящий, ну и там возврат был по всем правилам.
C10, Win10x64
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Глупые вопросы

Сообщение Игорь Столяров »

vic7tar писал(а): 04 Сентябрь 2018, 18:19ну выдает 3.33, а что должно быть?
Согласен, здесь срабатывает обратное преобразование строки в число. Исправил на "арбуз". :)
За теми кто отстал - не возвращаться. (С) Кодекс
Vladimir
Посетитель
Сообщения: 33
Зарегистрирован: 19 Октябрь 2005, 14:38

Глупые вопросы

Сообщение Vladimir »

Привет всем. Может быть кто-то сталкивался с такой ситуацией. Создаю в 6-ке стандартным шаблоном ADOprocess (Provider=VFPOLEDB.1 пробовал и Provider=MSDASQL.1. c VFP таблицей DBF). В схеме данных все однозначно, указываю Primary table of ADO... и все работает на ура!. Пробую то же самое в 10-ке - в схеме требует указать кроме Primary table of ADO еще и File(s) to process . Что за File(s) to process не понимаю, в хелпе об этом ни стова. Указываю и там и там одну и ту же таблицу (файл). В результате получаю Access violation. Причем если создать APP в 6-ке и открыть в 10-ке, то, естественно, все ок, Primary table есть, File(s) to process нет... куда смотреть не понимаю, но уж очень не айс параллельно в 2-х срЕдах одно и то же делать.
Table Schematic Definition.jpg
analiz_im - Clarion [version 10.0.12799] (Debug).jpg
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Глупые вопросы

Сообщение Игорь Столяров »

Давненько я не брал в руки шашек … в смысле не терзал ADO. ;)

Посмотрите, что у Вас выставлено в Defines Project в C63 и перенесите сие в проект С10.
В С10 через ... в общем неправильно иногда срабатывают шаблоны. :)
Должно быть что-то вроде:

Код: Выделить всё

_COMLinkMode_
_COMDLLMode_=>off
_ADOLinkMode_
_ADODLLMode_=>off
_ADOMPRLinkMode_
_ADOMPRDLLMode_=>off
_SVDllMode_=>0
_SVLinkMode_=>1
_ABCDllMode_=>0
_ABCLinkMode_=>1
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить