Вверх ↑
Ответов: 10
Рейтинг: 0
#1: 2018-11-26 18:28:50 ЛС | профиль | цитата
sla8a писал(а):
Что мне нужно сделать, чтоб получить вашу "ошибку"?


На примере вашей схемы - после нажатия кнопки Read ничего не происходит, если Section в компоненте Ini пустая.
Пример неработающей схемы


Add(MainForm,2953706,161,77)
{
Height=165
}
Add(Button,4958922,161,168)
{
Left=10
Top=10
Caption="Read"
link(onClick,15562302:doSectionNames,[])
AddHint(0,37,43,13,Data)
}
Add(Ini,15562302,224,154)
{
FileName="d:\example.ini"
Point(doSectionNames)
Point(onSectionNames)
link(onSectionNames,14690594:doAdd,[])
AddHint(-29,-32,81,13,FileName)
}
Add(ListBox,14690594,287,161)
{
Left=80
Top=10
Width=290
Height=105
}

А если заменить NULL на Integer и 0 - всё работает
А так работает


Add(MainForm,2953706,161,77)
{
Height=165
}
Add(Button,4958922,161,168)
{
Left=10
Top=10
Caption="Read"
Data=Integer(0)
link(onClick,15562302:doSectionNames,[])
AddHint(0,37,21,13,Data)
}
Add(Ini,15562302,224,154)
{
FileName="d:\example.ini"
Point(doSectionNames)
Point(onSectionNames)
link(onSectionNames,14690594:doAdd,[])
AddHint(-29,-32,81,13,FileName)
}
Add(ListBox,14690594,287,161)
{
Left=80
Top=10
Width=290
Height=105
}

--- Добавлено в 2018-11-26 18:38:33

nesco писал(а):
А по существу вопроса -- код построен так, что имя Section не должно содержать пустой строки для всех методов, и все из-за наличия общего метода Open во всех этих методах. NULL в функции ReadString (внутри кода) трансформируется в пустую строку, а вот Integer -- в цифру, потому и работает. Пропиши любое отличное от пустой строки дефолтное значение в свойстве Section, и все должно работать. Это азы построения циркуляции данных в HiAsm-e, описан в справке (а кто ее читает, эту справку) -- сначала считываются верхние точки, затем свойства и только в последнюю очередь поток.


Спасибо за чёткое и подробное объяснение. Про азы циркуляции данных в курсе, но никогда за всё время использования Hiasm не сталкивался с ситуацией, когда значение параметра в компоненте, заданное по-умолчанию (в данном случае пустая строка для Section) вызывало бы ошибку (в данном случае несрабатывание метода doSectionNames) Даже не представляю, как я мог бы догадаться... Что до справки - после того, как chm файл перестал отображать содержимое страницы из-за ошибки с bbcode - стало жутко неудобно лезть каждый раз на Wiki. Ещё раз спасибо!
карма: 0

0
Редактировалось 3 раз(а), последний 2018-11-26 18:38:33