random.ini
#ini
...
Max=The exclusive upper bound of the random number to be generated. Max must be greater than or equal to zero. ARG(int)|1|0
...
Потом что-нибудь придумаем.
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Да есть такое. Проще всего отредактировать ini файл:
random.ini
Потом что-нибудь придумаем. |
|||
карма: 6 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Nic, тоже с подобным сталкивался - если значение свойства равно по-умолчанию, то оно перекрывается значением из потока.
Есть какие-то соображения? Например, в стандартном пакете значение из потока берется, если значение свойства 0 или "". Может как-то можно усовершенствовать систему приоритетов? |
|||
карма: 26 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Netspirit, приоритеты сейчас такие (от высшего к низшему): верхняя точка, свойство (не по-умолчанию), поток.
Проверка на 0, или "", или что угодно не вариант, так как в пакете много значений по-умолчанию отличных от нуля и прочих значений. Поэтому не надо выдумывать искусственных значений по-умолчанию, как в компоненте Random. Пользователь сам знает какое ему надо верхнее значение диапазона случайных чисел. |
|||
карма: 6 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Да тут просто проблема в том, что стояло, допустим, в Random по-умолчанию Max=100. Меня это значение устраивает. А тут из потока прилетает 1000 - и всё. Единственный вариант получить корректно это "100" - поставить в этом месте в потоке заглушку типа DoData.
Чтобы этого не было, ты предложил поставить в ini по-умолчанию 0. В более общем смысле - чтобы иметь возможность получать значение из потока, нужно во всех свойствах, для которых есть верхняя точка, предусматривать такое значение по-умолчанию, которое либо не используется в самом свойстве, либо в справке указывать, что может понадобиться перекрыть поток с помощью DoData. Тут можно только немного уменьшить количество таких случаев, если в кодогенераторе немного подправить логику чтения потока: если свойство равно по-умолчанию - читать поток только, если в нем есть данные, иначе подставлять свойство по-умолчанию (в примере tig-rrr именно тот случай, когда при пустом потоке логично было бы подставить свойство, каким бы оно ни было). На то оно и "по-умолчанию", чтобы стоять, когда нет других данных. |
|||
карма: 26 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Netspirit писал(а): предусматривать такое значение по-умолчанию, которое либо не используется в самом свойствеСамо понятие "значение по-умолчанию" означает что, даже если оно явно не указано как параметр, его значение используется при вызове метода. Max=100 в документации MSDN по классу System.Random не фигурирует - это "выдуманное" значение. Однако, свойство Opacity=1.0 для класса System.Windows.Forms.Form "настоящее" значение по-умолчанию. Netspirit писал(а): ... при пустом потоке логично было бы подставить свойство, каким бы оно ни было...Это не общий случай, а очень частный, так как разработчик может его реализовать использую скрипт:
Если сможете привести пример, где предложенную вами логику невозможно реализовать средствами языка, тогда добавим ее в кодогенератор. |
|||
карма: 6 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Приведенный фрагмент, по-моему, не удобен - он не полный, так как в нем нельзя получить значение из потока. Полностью он должен был бы выглядеть так (извиняюсь за ошибки - RTCG не знаю):
|
|||
карма: 26 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Netspirit, если сделать как предлагаете Вы, то в каждом компоненте появится ограничение на получение данных из потока. Например, мы никогда не получим из потока параметр="" (пустая строка) или ноль (0) и тогда уже надо будет придумывать скрипт для решения этой проблемы. Так в чём разница с тем как сделано сейчас?
|
|||
карма: 6 |
|
Ответов: 4628
Рейтинг: 749
|
|||
В том, что мы сейчас в большинстве случаев не получим значения свойства по-умолчанию, так как оно будет перекрываться потоком, даже пустым. И приходится делать искусственное значение по-умолчанию, которым можно пожертвовать, чтобы получить значение из потока.
Нюанс: 0 или "" мы не получим из потока, если будем их проверять с помощью len(). Тогда как для кодогенератора должна быть разница между event(onResult, 0) и
event(onResult)
Первый вариант должен быть приоритетнее перед свойством по-умолчанию, а второй - наоборот. Уточню, в чем разница: в первом случае typeof(_data) должно быть dtInteger, во втором - dtNull. |
|||
карма: 26 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Эта проблема в новых версиях решается шаблоном - по-умолчанию везде нули и пустые строки, шаблоном накатываются свойства, достаточные для работы элемента, и далее если разработчику они не нужны, он их просто выставляет в исходное состояние и принимает из потока все, что необходимо
|
|||
карма: 27 |
| ||
Голосовали: | sla8a |
Ответов: 4628
Рейтинг: 749
|
|||
Примерно понятно. Я просто мыслю в категориях стандартного пакета, почему и начал это обсуждение. Там с шаблонами элементов не нужно возиться.
|
|||
карма: 26 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Простой асинхронный сканер портов: PortScanner
|
|||
карма: 6 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Пример чтения содержимого почтового ящика: MailClient
|
|||
карма: 6 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Тестовый макет нового проекта Class:
cnet_project_class.png cnet_project_class_concept.png |
|||
карма: 6 |
| ||
файлы: 2 | cnet_project_class.png [21.2KB] [982], cnet_project_class_concept.png [132.9KB] [781] | ||
Голосовали: | iarspider, Мартынов |
Ответов: 5446
Рейтинг: 323
|
|||
Nic, я преклоняюсь перед твоим трудолюбием!
|
|||
карма: 1 |
|
Ответов: 33
Рейтинг: 1
|
|||
Прошу просветить по одному вопросу.Приложение созданное этим пакетом не запускается на Compact Net Framework v3.7 т.е.выпадает ошибка -Не найдено имя файла или сборки "System.Windows.Forms,Version=2.0.0.0,Culture=neutral,PublicKeyToken=B77A5C561934E089"либо одна из их зависимостей.
Понятно что версия компакт урезанная и в ней кой-чего не хватает.Что то можно сделать или безнадежно? |
|||
карма: 1 |
|