Простейший пример: кнопка и компонент "INI" с доп.точками "doSectionNames" и "onSectionNames". При нажатии на кнопку, секции из ini-файла не читаются, но если изменить кнопке свойство "Данные" с NULL на Integer (можно даже цифру не ставить) - всё читается на ура. Можно это как-нибудь починить?
Этот топик читают: Гость
Ответов: 10
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 2265
Рейтинг: 676
|
|||
Aroyl, вы не выложили схему в которой можно увидеть ошибку.
Aroyl писал(а): если изменить кнопке свойство "Данные" с NULL на Integer (можно даже цифру не ставить) То там автоматически будет выставлен 0. Integer всегда чему то равен, если вы не устанавливаете нужное вам значение, то по умолчанию присваивается значение равное 0. |
|||
карма: 11 |
|
Ответов: 10
Рейтинг: 0
|
|||
sla8a писал(а): Aroyl, вы не выложили схему в которой можно увидеть ошибку.
Aroyl писал(а): если изменить кнопке свойство "Данные" с NULL на Integer (можно даже цифру не ставить) То там автоматически будет выставлен 0. Integer всегда чему то равен, если вы не устанавливаете нужное вам значение, то по умолчанию присваивается значение равное 0. Спасибо, кэп А по существу вопроса? |
|||
карма: 0 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
Aroyl писал(а): А по существу вопроса?А по существу вопроса -- код построен так, что имя Section не должно содержать пустой строки для всех методов, и все из-за наличия общего метода Open во всех этих методах. NULL в функции ReadString (внутри кода) трансформируется в пустую строку, а вот Integer -- в цифру, потому и работает. Пропиши любое отличное от пустой строки дефолтное значение в свойстве Section, и все должно работать. Это азы построения циркуляции данных в HiAsm-e, описан в справке (а кто ее читает, эту справку) -- сначала считываются верхние точки, затем свойства и только в последнюю очередь поток. Редактировалось 5 раз(а), последний 2018-11-24 11:40:34 |
|||
карма: 22 |
|
Ответов: 2265
Рейтинг: 676
|
|||
карма: 11 |
|
Ответов: 10
Рейтинг: 0
|
|||
sla8a писал(а): Что мне нужно сделать, чтоб получить вашу "ошибку"?На примере вашей схемы - после нажатия кнопки Read ничего не происходит, если Section в компоненте Ini пустая. Пример неработающей схемы
А если заменить NULL на Integer и 0 - всё работает А так работает
--- Добавлено в 2018-11-26 18:38:33 nesco писал(а): А по существу вопроса -- код построен так, что имя Section не должно содержать пустой строки для всех методов, и все из-за наличия общего метода Open во всех этих методах. NULL в функции ReadString (внутри кода) трансформируется в пустую строку, а вот Integer -- в цифру, потому и работает. Пропиши любое отличное от пустой строки дефолтное значение в свойстве Section, и все должно работать. Это азы построения циркуляции данных в HiAsm-e, описан в справке (а кто ее читает, эту справку) -- сначала считываются верхние точки, затем свойства и только в последнюю очередь поток.Спасибо за чёткое и подробное объяснение. Про азы циркуляции данных в курсе, но никогда за всё время использования Hiasm не сталкивался с ситуацией, когда значение параметра в компоненте, заданное по-умолчанию (в данном случае пустая строка для Section) вызывало бы ошибку (в данном случае несрабатывание метода doSectionNames) Даже не представляю, как я мог бы догадаться... Что до справки - после того, как chm файл перестал отображать содержимое страницы из-за ошибки с bbcode - стало жутко неудобно лезть каждый раз на Wiki. Ещё раз спасибо! Редактировалось 3 раз(а), последний 2018-11-26 18:38:33 |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Aroyl писал(а): после нажатия кнопки Read ничего не происходит, если Section в компоненте Ini пустая. 4Aroyl.png |
|||
карма: 9 |
|
Ответов: 2265
Рейтинг: 676
|
|||
Aroyl, у меня нет ошибки и при Null, как видите и у Galkov-а тоже.
Нет ошибки nesco писал(а): имя Section не должно содержать пустой строки для всех методовnesco, а при чем Section в Open к doSectionNames? Понятно что происходит вызов Open, но даже если закоментировать (//Ini.Section := ReadString(_Data,_data_Section,_prop_Section);) все равно doSectionNames отрабатывает. Зачем doSectionNames значение Section если происходит поиск всех секций? Редактировалось 6 раз(а), последний 2018-11-26 22:18:29 |
|||
карма: 11 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
Может у нас код разный, а может тогда я чего-то не догнал
Смотрим код и попытаемся его разобрать
Это чисто логические разборки кода, но честно, я не проверял его конкретно, может я где-то и ошибаюсь. Редактировалось 4 раз(а), последний 2018-11-26 22:24:41 |
|||
карма: 22 |
|
Ответов: 2265
Рейтинг: 676
|
|||
Вижу что на SVN есть обновление. Вопрос зачем это? Редактировалось 2 раз(а), последний 2018-11-26 22:27:05 |
|||
карма: 11 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
sla8a писал(а): Вот этого у меня нет. Это только у вас или на SVN тоже внесено? И вообще зачем это?Понятия не имею, сейчас проверю. --- Добавлено в 2018-11-26 22:28:21 Да, на SVN тоже так же, как и у меня. А вот когда и почему, я в упор не помню, посмотрю коммент, но только завтра. --- Добавлено в 2018-11-26 22:29:28 sla8a писал(а): Вижу что на SVN есть обновление. Вопрос зачем это?А что в комментах написано? PS Вот в упор не помню, зачем я это туда всунул. Редактировалось 3 раз(а), последний 2018-11-26 22:30:59 |
|||
карма: 22 |
|
Ответов: 2265
Рейтинг: 676
|
|||
Тут смотрю http://svn.hiasm.com/packs/delphi/code/, коментов нет.
|
|||
карма: 11 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
sla8a писал(а): Тут смотрю http://svn.hiasm.com/packs/delphi/code/, коментов нет.Надо черепахой смотреть, но это только завтра. --- Добавлено в 2018-11-26 22:41:39 Может вот поэтому я это вставил -- http://forum.hiasm.com/topic/66481 Редактировалось 4 раз(а), последний 2018-11-26 22:46:50 |
|||
карма: 22 |
|
Ответов: 2265
Рейтинг: 676
|
|||
Вот это помню: Ini очистка файла а
|
|||
карма: 11 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
В коде вот еще что есть -- if key = '' then exit;. Скорее всего, именно по причине RunTime Errora и была правка (см. мой предыдущий пост).
Редактировалось 1 раз(а), последний 2018-11-26 22:50:31 |
|||
карма: 22 |
|