Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Peter, DEMBEL, YURIY  
Грамотное хранение настроек в ini файле
DeveloperДата: Вс, 03 Июня 2012, 03:43 | Сообщение # 1
Любопытный
Добрый день,уважаемые форумчане. Научите пожалуйста пользоваться с ini файлами грамотно в нб,чтобы в дальнейшем использовать её для настроек и т.п.
и если можно с примерами..


:mda:
 
СообщениеДобрый день,уважаемые форумчане. Научите пожалуйста пользоваться с ini файлами грамотно в нб,чтобы в дальнейшем использовать её для настроек и т.п.
и если можно с примерами..

Автор - Developer
Дата добавления - 03 Июня 2012 в 03:43
PeterДата: Вс, 03 Июня 2012, 07:09 | Сообщение # 2
Админ NeoBook
Рабочих примеров в настоящий момент под рукой нет, сорри...
Но и без них все достаточно просто.

Для того, чтобы хранить настройки NB-проекта необязательно использовать ini-файл по всем правилам.
Достаточно сохранить значения переменных во внешнем текстовом файле (и ничто не мешает дать ему вожделенное расширение ini), и при необходимости загружать из него переменные при старте программы, или в другом нужном случае.
Для этих целей в NB имеются команды SaveVariables и LoadVariables соответственно.

У штатной необушной SaveVariables есть один недостаток - она сохраняет абсолютно все (гуртом) переменные, имеющиеся в проекте на момент сохранения.
Это, естесственно, несколько неудобно.
Можно сохранять только нужные переменные с помощью nb-функции SaveVars (в прикреплении).
Она работает аналогично штатной SaveVariables с той лишь разницей, что имена сохраняемых перемнных следует указывать через запятую (как в ClearVariables), но БЕЗ скобок.

Кстати, LoadVariables вполне душевно работает не только с внешними, но и с вложенными файлами.
;)
Прикрепления: SaveVars.zip (0.5 Kb)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеРабочих примеров в настоящий момент под рукой нет, сорри...
Но и без них все достаточно просто.

Для того, чтобы хранить настройки NB-проекта необязательно использовать ini-файл по всем правилам.
Достаточно сохранить значения переменных во внешнем текстовом файле (и ничто не мешает дать ему вожделенное расширение ini), и при необходимости загружать из него переменные при старте программы, или в другом нужном случае.
Для этих целей в NB имеются команды SaveVariables и LoadVariables соответственно.

У штатной необушной SaveVariables есть один недостаток - она сохраняет абсолютно все (гуртом) переменные, имеющиеся в проекте на момент сохранения.
Это, естесственно, несколько неудобно.
Можно сохранять только нужные переменные с помощью nb-функции SaveVars (в прикреплении).
Она работает аналогично штатной SaveVariables с той лишь разницей, что имена сохраняемых перемнных следует указывать через запятую (как в ClearVariables), но БЕЗ скобок.

Кстати, LoadVariables вполне душевно работает не только с внешними, но и с вложенными файлами.
;)

Автор - Peter
Дата добавления - 03 Июня 2012 в 07:09
mishemДата: Вс, 03 Июня 2012, 11:35 | Сообщение # 3
Эксперт форума
http://ru.wikipedia.org/wiki/.ini

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщениеhttp://ru.wikipedia.org/wiki/.ini

Автор - mishem
Дата добавления - 03 Июня 2012 в 11:35
ВадимДата: Вт, 05 Июня 2012, 02:45 | Сообщение # 4
Генератор идей
У ini-файлов есть определенное преимущество перед обычным текстовым файлом - благодаря структуре секций (разделов) и параметров можно обращаться к записям напрямую, по имени параметра, что очень и очень удобно, поскольку можно не заботиться о числе строк в файле. Т.е. ini-файл можно рассматривать как своего рода базу данных. Пусть и примитивную по структуре, но для хранения настроек очень даже удобную.

Правда для работы с ini-файлами приходится прибегать к помощи плагинов. Зато, тут есть выбор: hpwUtility 2.16 (Hans-Peter Wickern), NeoDouble 1.0.6 (David Esperalta), RacAutoIt3x 1.0 (Roman Avalos Castillo)

Developer, можете посмотреть пример использования ini-файлов для хранения временных настроек у меня в проекте "NeoCommands" (см. код на картинках объекта Container9, используется плагин NeoDouble). Ссылка в подписи - "База по командам NB".


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)

Сообщение отредактировано
Вадим - Вт, 05 Июня 2012, 02:47
 
СообщениеУ ini-файлов есть определенное преимущество перед обычным текстовым файлом - благодаря структуре секций (разделов) и параметров можно обращаться к записям напрямую, по имени параметра, что очень и очень удобно, поскольку можно не заботиться о числе строк в файле. Т.е. ini-файл можно рассматривать как своего рода базу данных. Пусть и примитивную по структуре, но для хранения настроек очень даже удобную.

Правда для работы с ini-файлами приходится прибегать к помощи плагинов. Зато, тут есть выбор: hpwUtility 2.16 (Hans-Peter Wickern), NeoDouble 1.0.6 (David Esperalta), RacAutoIt3x 1.0 (Roman Avalos Castillo)

Developer, можете посмотреть пример использования ini-файлов для хранения временных настроек у меня в проекте "NeoCommands" (см. код на картинках объекта Container9, используется плагин NeoDouble). Ссылка в подписи - "База по командам NB".

Автор - Вадим
Дата добавления - 05 Июня 2012 в 02:45
PeterДата: Вт, 05 Июня 2012, 07:29 | Сообщение # 5
Админ NeoBook
Quote (Вадим)
что очень и очень удобно,

Возможно...

Но толку...
В любом случае NB понимает только свои переменные (ведь, в итоге-то все "приводить"-то нужно именно к ним, причем, как в одну, так и в другую сторону), которые, аккурат наиболее практично грузить через LoadVariables, и без всяких плагинов, и обращаться к нужной настройке-параметру уже напрямую, по-человечески, т.е. к переменной.
Таскать плагин, чтобы один раз загрузить настройки, коих и десяток-то с трудом наберется...
Да пусть даже сотня.
Гм...
Как минимум, лишняя операция.
Впрочем, каждый сам себе "режиссер"...
;)

ini-файлы достались в наследство ещё со времен Win 3.11, и реально программы ими уже не пользуются (для этих целей существует Реестр), даже несмотря на то, что сама винда кое-где их ещё использует.

Добавлено (05 Июня 2012, 07:29)
---------------------------------------------
Quote (Вадим)
для хранения временных настроек у меня в проекте "NeoCommands" (см. код на картинках объекта Container9, используется плагин NeoDouble).

Честно говоря, влом разбираться с тем, каким образом попадает ini-файл во временную папку, но суть не в этом.

Смотрим код:
Code
FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
If "[TempNC]" "=" ""
        zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
        If "[EntryColor]" "<>" ""
           npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
        EndIf
Else
        npExisteValorIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor"
        If "[npResultadoAccion]" "<>" "true"
           zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
           If "[EntryColor]" "<>" ""
              npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
           EndIf
        Else
           npLeerIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
           SetVar "[EntryColor]" "[npResultadoAccion]"
.      SetVar "[EntryColorR10]" "[EntryColor]"
.      SetObjectFill "Rectangle10" "[EntryColorR10]" "Solid" "False"
           zmColorBox "[EntryColor]" "" "" "R,G,B" "[EntryColor]"
           If "[EntryColor]" "<>" ""
              npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
           EndIf
        EndIf
EndIf


Т.е. что у нас получается (если я все правильно понял, т.к. этот плагин не знаю): каждый раз когда мы кликаем по картинке, мы вызываем диалог выбора цвета, и, если цвет не выбран, каждый раз грузим его из ini-файла.
Вопрос - зачем?
Не проще ли написать что-то в этом духе:
Code

DefineVar "[TempColor]" "String" "" "Local" ""
......
zmColorBox "233,222,207" "" "" "R,G,B" "[TempColor]"
        If "[TempyColor]" "<>" ""
          SetVar "[EntryColor]" '[TempColor]"
        EndIf

И ни ini-файл, ни, тем более плагин, не нужны!
Дальше мысль развивать не буду, т.к. и так все должно быть понятно.
:)

Кстати, Вадим, убери со стартовой странички все внешние окна, и помести, например, на следующую.
Быстрее будет грузиться проект.
;)



А блин, похоже (по логике) мы не грузим, а сохраняем цвет:
Quote

If "[EntryColor]" "<>" ""
npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
EndIf
Если так, то тогда все ещё хуже, т.к. ещё более непрактичнее.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
что очень и очень удобно,

Возможно...

Но толку...
В любом случае NB понимает только свои переменные (ведь, в итоге-то все "приводить"-то нужно именно к ним, причем, как в одну, так и в другую сторону), которые, аккурат наиболее практично грузить через LoadVariables, и без всяких плагинов, и обращаться к нужной настройке-параметру уже напрямую, по-человечески, т.е. к переменной.
Таскать плагин, чтобы один раз загрузить настройки, коих и десяток-то с трудом наберется...
Да пусть даже сотня.
Гм...
Как минимум, лишняя операция.
Впрочем, каждый сам себе "режиссер"...
;)

ini-файлы достались в наследство ещё со времен Win 3.11, и реально программы ими уже не пользуются (для этих целей существует Реестр), даже несмотря на то, что сама винда кое-где их ещё использует.

Добавлено (05 Июня 2012, 07:29)
---------------------------------------------
Quote (Вадим)
для хранения временных настроек у меня в проекте "NeoCommands" (см. код на картинках объекта Container9, используется плагин NeoDouble).

Честно говоря, влом разбираться с тем, каким образом попадает ini-файл во временную папку, но суть не в этом.

Смотрим код:
Code
FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
If "[TempNC]" "=" ""
        zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
        If "[EntryColor]" "<>" ""
           npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
        EndIf
Else
        npExisteValorIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor"
        If "[npResultadoAccion]" "<>" "true"
           zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
           If "[EntryColor]" "<>" ""
              npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
           EndIf
        Else
           npLeerIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
           SetVar "[EntryColor]" "[npResultadoAccion]"
.      SetVar "[EntryColorR10]" "[EntryColor]"
.      SetObjectFill "Rectangle10" "[EntryColorR10]" "Solid" "False"
           zmColorBox "[EntryColor]" "" "" "R,G,B" "[EntryColor]"
           If "[EntryColor]" "<>" ""
              npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
           EndIf
        EndIf
EndIf


Т.е. что у нас получается (если я все правильно понял, т.к. этот плагин не знаю): каждый раз когда мы кликаем по картинке, мы вызываем диалог выбора цвета, и, если цвет не выбран, каждый раз грузим его из ini-файла.
Вопрос - зачем?
Не проще ли написать что-то в этом духе:
Code

DefineVar "[TempColor]" "String" "" "Local" ""
......
zmColorBox "233,222,207" "" "" "R,G,B" "[TempColor]"
        If "[TempyColor]" "<>" ""
          SetVar "[EntryColor]" '[TempColor]"
        EndIf

И ни ini-файл, ни, тем более плагин, не нужны!
Дальше мысль развивать не буду, т.к. и так все должно быть понятно.
:)

Кстати, Вадим, убери со стартовой странички все внешние окна, и помести, например, на следующую.
Быстрее будет грузиться проект.
;)



А блин, похоже (по логике) мы не грузим, а сохраняем цвет:
Quote

If "[EntryColor]" "<>" ""
npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
EndIf
Если так, то тогда все ещё хуже, т.к. ещё более непрактичнее.

Автор - Peter
Дата добавления - 05 Июня 2012 в 07:29
ВадимДата: Вт, 05 Июня 2012, 12:11 | Сообщение # 6
Генератор идей
Quote (Peter)
наиболее практично грузить через LoadVariables
Тебе виднее, я этой командой еще наверное и не пользовался ни разу, надо будет освоить. Когда я выбирал способ хранения настроек, то искал просто наиболее понятный и простой способ.
Quote (Peter)
Смотрим код:
Могу всех деталей сейчас не вспомнить, но смысл этого кода в том, чтобы при вызове диалога выбора цвета юзер видел в этом диалоге выбираемый им ранее цвет (а не все время тот, что по умолчанию в диалоге). Это позволяет, во-первых, при настройке цветовой гаммы отталкиваться от уже выбираемых прежде настроек (в этом случае можно сделать цвет светлее, темнее, теплее и т.д.), в противном же случае все время придется выставлять цвет заново, что совершенно не удобно, а, во-вторых, если нажать в диалоге выбора цвета ОК (а цвет ни вручную, ни скриптом не восстановить), то будет присвоен цвет по умолчанию, соответственно юзер не слабо удивится тому, что цвет он не собирался менять, однако цвет изменился сам... Если же цвет не выбирался еще юзером, то скриптом подставляется цвет выбранный мною по умолчанию.

Поскольку с настройками цветовой гаммы юзер играется обычно лишь на этапе знакомства с программой и потом уже ничего не меняет, то хранить эти настройки цвета и шрифта в реестре нет никакого смысла. Поэтому я вынес временные настройки (используемые при настройке интерфейса) в отдельный ини-файл. Пока идет настройка интерфейса юзер всегда видит в диалоге цвета или в диалоге шрифта те цвета и прочие параметры, которые только что были задействованы.

Quote (Peter)
убери со стартовой странички все внешние окна, и помести, например, на следующую.
Быстрее будет грузиться проект.
Да, mishem тоже уже указывал на это. Обязательно сделаю, я не знал, что есть такая связь - со скоростью загрузки проекта. Сейчас просто времени нет совсем - курсовики, дипломники, аспиранты, диссертанты, предзащиты, защиты... %) Не продохнуть.
Проект намерен доводить до ума, потому рад всем замечаниям и предложениям! Я их все сохраняю в отдельный файлик, а потом отрабатываю и отписываюсь по каждому замечанию.


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение
Quote (Peter)
наиболее практично грузить через LoadVariables
Тебе виднее, я этой командой еще наверное и не пользовался ни разу, надо будет освоить. Когда я выбирал способ хранения настроек, то искал просто наиболее понятный и простой способ.
Quote (Peter)
Смотрим код:
Могу всех деталей сейчас не вспомнить, но смысл этого кода в том, чтобы при вызове диалога выбора цвета юзер видел в этом диалоге выбираемый им ранее цвет (а не все время тот, что по умолчанию в диалоге). Это позволяет, во-первых, при настройке цветовой гаммы отталкиваться от уже выбираемых прежде настроек (в этом случае можно сделать цвет светлее, темнее, теплее и т.д.), в противном же случае все время придется выставлять цвет заново, что совершенно не удобно, а, во-вторых, если нажать в диалоге выбора цвета ОК (а цвет ни вручную, ни скриптом не восстановить), то будет присвоен цвет по умолчанию, соответственно юзер не слабо удивится тому, что цвет он не собирался менять, однако цвет изменился сам... Если же цвет не выбирался еще юзером, то скриптом подставляется цвет выбранный мною по умолчанию.

Поскольку с настройками цветовой гаммы юзер играется обычно лишь на этапе знакомства с программой и потом уже ничего не меняет, то хранить эти настройки цвета и шрифта в реестре нет никакого смысла. Поэтому я вынес временные настройки (используемые при настройке интерфейса) в отдельный ини-файл. Пока идет настройка интерфейса юзер всегда видит в диалоге цвета или в диалоге шрифта те цвета и прочие параметры, которые только что были задействованы.

Quote (Peter)
убери со стартовой странички все внешние окна, и помести, например, на следующую.
Быстрее будет грузиться проект.
Да, mishem тоже уже указывал на это. Обязательно сделаю, я не знал, что есть такая связь - со скоростью загрузки проекта. Сейчас просто времени нет совсем - курсовики, дипломники, аспиранты, диссертанты, предзащиты, защиты... %) Не продохнуть.
Проект намерен доводить до ума, потому рад всем замечаниям и предложениям! Я их все сохраняю в отдельный файлик, а потом отрабатываю и отписываюсь по каждому замечанию.

Автор - Вадим
Дата добавления - 05 Июня 2012 в 12:11
PeterДата: Вт, 05 Июня 2012, 15:43 | Сообщение # 7
Админ NeoBook
Quote (Вадим)
в противном же случае все время придется выставлять цвет заново, что совершенно не удобно, а, во-вторых, если нажать в диалоге выбора цвета ОК (а цвет ни вручную, ни скриптом не восстановить), то будет присвоен цвет по умолчанию, соответственно юзер не слабо удивится тому, что цвет он не собирался менять, однако цвет изменился сам...

%)
Раз десять прочел, но ничегошеньки не понял.
Почему надо выставлять цвет заново?
Почему, если нажать ОК, будет присвоен цвет по-умолчанию?
Почему, если юзверь нажал ОК, означает, что он не собирался менять цвет и должен удивиться?
Куча вопросов и непоняток вообще по всему тексту поста...
Ну да ладно...

Важнее это:
Quote (Вадим)
я этой командой еще наверное и не пользовался ни разу, надо будет освоить

Вот когда освоишь, поймешь насколько бессмысленным (и даже неудобным) является использование ini-файла и плагина.
;)

И кстати, тот вариант функции SaveVars, который я выложил, простейший и вовсе не единственно возможный. Функцию можно сделать ведь гибче и расширеннее, и назвать её гордо SaveVarsEx.
:)
А с LoadVariables вообще ничего не надо делать.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
в противном же случае все время придется выставлять цвет заново, что совершенно не удобно, а, во-вторых, если нажать в диалоге выбора цвета ОК (а цвет ни вручную, ни скриптом не восстановить), то будет присвоен цвет по умолчанию, соответственно юзер не слабо удивится тому, что цвет он не собирался менять, однако цвет изменился сам...

%)
Раз десять прочел, но ничегошеньки не понял.
Почему надо выставлять цвет заново?
Почему, если нажать ОК, будет присвоен цвет по-умолчанию?
Почему, если юзверь нажал ОК, означает, что он не собирался менять цвет и должен удивиться?
Куча вопросов и непоняток вообще по всему тексту поста...
Ну да ладно...

Важнее это:
Quote (Вадим)
я этой командой еще наверное и не пользовался ни разу, надо будет освоить

Вот когда освоишь, поймешь насколько бессмысленным (и даже неудобным) является использование ini-файла и плагина.
;)

И кстати, тот вариант функции SaveVars, который я выложил, простейший и вовсе не единственно возможный. Функцию можно сделать ведь гибче и расширеннее, и назвать её гордо SaveVarsEx.
:)
А с LoadVariables вообще ничего не надо делать.

Автор - Peter
Дата добавления - 05 Июня 2012 в 15:43
mishemДата: Вт, 05 Июня 2012, 17:56 | Сообщение # 8
Эксперт форума
Quote (Peter)
и, если цвет не выбран, каждый раз грузим его из ini-файла.

Этот ход действий вообще не понятен.
Настройки из файла должны загружаться только при запуске программы и записываться в файл при закрытии. Остальные манипуляции просто безсмысленные. Ну можно еще сделать запись при изменении, на случай краха программы.

Код Вадима который привел Петр, вообще какой то мягко говоря не правильный. :)

FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
Почему файл настроек находится в Темп дирректории? %)
Отсюда все лишние телодвижения.
Если не хочешь что бы его видели, сделай скрытым. У большинства неопытных юзверей опция "Показывать скрытые файлы" отключена.

Code
If "[TempNC]" "=" ""
          zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
          If "[EntryColor]" "<>" ""
             npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
          EndIf
Else


zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
Этой командой постоянно навязывается свой цвет. Зачем?

Ведь в какой то переменной находится же тот цвет который существует в данный момент? Отсюда правильнее наверно будет:

zmColorBox "[цвет который существует в данный момент]" "" "" "R,G,B" "[EntryColor]"

If "[EntryColor]" "<>" ""
npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
EndIf
Как в данном случае [EntryColor] может быть пустая? Только если нажать Отмену. Значит это условие вообще ни к чему.

Правильнее наверно:
If "[EntryColor]" "<>" "[цвет который существует в данный момент]"

Ну и дальше в том же духе....
:)

Quote (Peter)
DefineVar "[TempColor]" "String" "" "Local" ""

Никак я не могу понять зачем в НБ объявлять переменные? Памяти у компов много, пусть будет? :)
Или сила привычки?

Quote (Peter)
А с LoadVariables вообще ничего не надо делать.

LoadVariables не практичная в силу того что она записывает все переменные.

Я где то уже писал что на много удобнее просто записывать нужные переменные в файл. Без всяких секций.

FileWrite "Имя файла" "All" "Var=[Var] [#13]Var1=[Var1] [#13]Var2=[Var2] [#13]......"


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Вт, 05 Июня 2012, 17:57
 
Сообщение
Quote (Peter)
и, если цвет не выбран, каждый раз грузим его из ini-файла.

Этот ход действий вообще не понятен.
Настройки из файла должны загружаться только при запуске программы и записываться в файл при закрытии. Остальные манипуляции просто безсмысленные. Ну можно еще сделать запись при изменении, на случай краха программы.

Код Вадима который привел Петр, вообще какой то мягко говоря не правильный. :)

FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
Почему файл настроек находится в Темп дирректории? %)
Отсюда все лишние телодвижения.
Если не хочешь что бы его видели, сделай скрытым. У большинства неопытных юзверей опция "Показывать скрытые файлы" отключена.

Code
If "[TempNC]" "=" ""
          zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
          If "[EntryColor]" "<>" ""
             npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
          EndIf
Else


zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
Этой командой постоянно навязывается свой цвет. Зачем?

Ведь в какой то переменной находится же тот цвет который существует в данный момент? Отсюда правильнее наверно будет:

zmColorBox "[цвет который существует в данный момент]" "" "" "R,G,B" "[EntryColor]"

If "[EntryColor]" "<>" ""
npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
EndIf
Как в данном случае [EntryColor] может быть пустая? Только если нажать Отмену. Значит это условие вообще ни к чему.

Правильнее наверно:
If "[EntryColor]" "<>" "[цвет который существует в данный момент]"

Ну и дальше в том же духе....
:)

Quote (Peter)
DefineVar "[TempColor]" "String" "" "Local" ""

Никак я не могу понять зачем в НБ объявлять переменные? Памяти у компов много, пусть будет? :)
Или сила привычки?

Quote (Peter)
А с LoadVariables вообще ничего не надо делать.

LoadVariables не практичная в силу того что она записывает все переменные.

Я где то уже писал что на много удобнее просто записывать нужные переменные в файл. Без всяких секций.

FileWrite "Имя файла" "All" "Var=[Var] [#13]Var1=[Var1] [#13]Var2=[Var2] [#13]......"

Автор - mishem
Дата добавления - 05 Июня 2012 в 17:56
PeterДата: Вт, 05 Июня 2012, 18:49 | Сообщение # 9
Админ NeoBook
Quote (mishem)
Настройки из файла должны загружаться только при запуске программы и записываться в файл при закрытии. Остальные манипуляции просто безсмысленные.

Вот и я про это же!
Quote (mishem)
Ну можно еще сделать запись при изменении, на случай краха программы.

Ну, тут тогда уж не до настроек будет.
:D
Крайне редкая ситуация, и не так часто встретишь прогу, где это предусмотрено.
Можно, конечно, но я бы не стал этого делать, если настройки не жизненно важные для проги, а такие настройки обычно всегда загружают сначала по-умолчанию, и только потом уже из внешнего файла или Реестра.
Quote (mishem)
Никак я не могу понять зачем в НБ объявлять переменные? Памяти у компов много, пусть будет?

mishem, мы уже обсуждали эту тему и не раз.
Вспомни...
;)
Дело тут не только в экономии памяти, а и ещё в устранении возможных (потенциальных) ошибок.
Я например всегда, когда делаю какие-либо промежутоные вычисления (или манипуляции), удаляю временные переменные.
Например, всегда записываю какой-либо одиночный промежуточный результат в перемнную [Result], а потом (в конце скрипта) её уничтожаю. Это не только экономит память, но и гарантирут, то, что в следующий раз, когда потребуется, не надо ломать голову типа "а что там в этой переменной может сейчас находиться? Может в ней чего-то полезное, а я её подвергаю экзекуции"....
Аргумент типа "памяти много" не из правил хорошего тона, т.е. "Нагадил? Будь любезен убери за собой!"

Да и глядеть в отладчик, в котором куча ненужного хлама, как-то не очень удобно - попробуй тут
отыщи ту переменную которая тебе нужна.
:)
А что касаемо "объявления"...
Может быть ситуация, когда важно что именно должно содержаться в переменной, например, число, и тогда попадание туда чего-то типа строки вызовет ошибку.
К тому же, объявленную переменную, нельзя уничтожить посредством SetVar (пусто). Это ещё одна защита "от дурака".
Никто не заставляет обязательно объявлять переменные, но и никто не запрещает делать это.

Quote (mishem)
LoadVariables не практичная в силу того что она записывает все переменные

LoadVariables не записывает, а загружает переменные!
Записывает SaveVariables.

Пример готовой функции для сохранения только нужных переменных см. в сообщении №2.
И я уже упоминал:
Quote (Peter)
вариант функции SaveVars, который я выложил, простейший и вовсе не единственно возможный. Функцию можно сделать ведь гибче и расширеннее, и назвать её гордо SaveVarsEx.

;)



- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (mishem)
Настройки из файла должны загружаться только при запуске программы и записываться в файл при закрытии. Остальные манипуляции просто безсмысленные.

Вот и я про это же!
Quote (mishem)
Ну можно еще сделать запись при изменении, на случай краха программы.

Ну, тут тогда уж не до настроек будет.
:D
Крайне редкая ситуация, и не так часто встретишь прогу, где это предусмотрено.
Можно, конечно, но я бы не стал этого делать, если настройки не жизненно важные для проги, а такие настройки обычно всегда загружают сначала по-умолчанию, и только потом уже из внешнего файла или Реестра.
Quote (mishem)
Никак я не могу понять зачем в НБ объявлять переменные? Памяти у компов много, пусть будет?

mishem, мы уже обсуждали эту тему и не раз.
Вспомни...
;)
Дело тут не только в экономии памяти, а и ещё в устранении возможных (потенциальных) ошибок.
Я например всегда, когда делаю какие-либо промежутоные вычисления (или манипуляции), удаляю временные переменные.
Например, всегда записываю какой-либо одиночный промежуточный результат в перемнную [Result], а потом (в конце скрипта) её уничтожаю. Это не только экономит память, но и гарантирут, то, что в следующий раз, когда потребуется, не надо ломать голову типа "а что там в этой переменной может сейчас находиться? Может в ней чего-то полезное, а я её подвергаю экзекуции"....
Аргумент типа "памяти много" не из правил хорошего тона, т.е. "Нагадил? Будь любезен убери за собой!"

Да и глядеть в отладчик, в котором куча ненужного хлама, как-то не очень удобно - попробуй тут
отыщи ту переменную которая тебе нужна.
:)
А что касаемо "объявления"...
Может быть ситуация, когда важно что именно должно содержаться в переменной, например, число, и тогда попадание туда чего-то типа строки вызовет ошибку.
К тому же, объявленную переменную, нельзя уничтожить посредством SetVar (пусто). Это ещё одна защита "от дурака".
Никто не заставляет обязательно объявлять переменные, но и никто не запрещает делать это.

Quote (mishem)
LoadVariables не практичная в силу того что она записывает все переменные

LoadVariables не записывает, а загружает переменные!
Записывает SaveVariables.

Пример готовой функции для сохранения только нужных переменных см. в сообщении №2.
И я уже упоминал:
Quote (Peter)
вариант функции SaveVars, который я выложил, простейший и вовсе не единственно возможный. Функцию можно сделать ведь гибче и расширеннее, и назвать её гордо SaveVarsEx.

;)


Автор - Peter
Дата добавления - 05 Июня 2012 в 18:49
mishemДата: Вт, 05 Июня 2012, 19:53 | Сообщение # 10
Эксперт форума
Quote (Peter)
mishem, мы уже обсуждали эту тему и не раз.
Вспомни...

Так по этому никак и не пойму. :D
Quote (Peter)
Никто не заставляет обязательно объявлять переменные, но и никто не запрещает делать это.

Это правильно. Вот я и не вижу смысла объявлять переменную.

Quote (Peter)
Может быть ситуация, когда важно что именно должно содержаться в переменной, например, число

Так это можно предусмотреть в текстовом поле. А если число попадает как то иначе, то на мой взгляд, это ошибка программиста, так как не смог предвидеть такой ситуации. :(

С точки зрения программирования, может быть это и правильно. Но я ж говорю, не вижу смысла этого делать в НБ.

И замечаю объявление переменных делают именно те, кто занимается программирование на других языках. Отсюда и вопрос был, в силу привычки? :)

Quote (Peter)
Пример готовой функции для сохранения только нужных переменных см. в сообщении №2.

Искал-искал, и просмотрел. Не дотянул до второго поста. :)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Peter)
mishem, мы уже обсуждали эту тему и не раз.
Вспомни...

Так по этому никак и не пойму. :D
Quote (Peter)
Никто не заставляет обязательно объявлять переменные, но и никто не запрещает делать это.

Это правильно. Вот я и не вижу смысла объявлять переменную.

Quote (Peter)
Может быть ситуация, когда важно что именно должно содержаться в переменной, например, число

Так это можно предусмотреть в текстовом поле. А если число попадает как то иначе, то на мой взгляд, это ошибка программиста, так как не смог предвидеть такой ситуации. :(

С точки зрения программирования, может быть это и правильно. Но я ж говорю, не вижу смысла этого делать в НБ.

И замечаю объявление переменных делают именно те, кто занимается программирование на других языках. Отсюда и вопрос был, в силу привычки? :)

Quote (Peter)
Пример готовой функции для сохранения только нужных переменных см. в сообщении №2.

Искал-искал, и просмотрел. Не дотянул до второго поста. :)

Автор - mishem
Дата добавления - 05 Июня 2012 в 19:53
PeterДата: Вт, 05 Июня 2012, 20:44 | Сообщение # 11
Админ NeoBook
Quote (mishem)
не вижу смысла этого делать в НБ.

Я уже сказал чуть раньше про "смысл".
В конце-концов, каждый программер мыслит индивидуально.
Я например, над кодом Вадима чуть было мозг не сломал, пытаясь понять смысл написанного, а для него все логично и просто.
:)
Quote (mishem)
в силу привычки?

Отчасти да.
В Delphi, например, объявлять "временные" переменные приходится постоянно.
Но у такого подхода (применительно к NB) есть одно неоспоримое достоинство: приучаешься к порядку в коде, "устаканиваешь" логику, и на ней учишься написанию максимально компактного кода.
;)



- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (mishem)
не вижу смысла этого делать в НБ.

Я уже сказал чуть раньше про "смысл".
В конце-концов, каждый программер мыслит индивидуально.
Я например, над кодом Вадима чуть было мозг не сломал, пытаясь понять смысл написанного, а для него все логично и просто.
:)
Quote (mishem)
в силу привычки?

Отчасти да.
В Delphi, например, объявлять "временные" переменные приходится постоянно.
Но у такого подхода (применительно к NB) есть одно неоспоримое достоинство: приучаешься к порядку в коде, "устаканиваешь" логику, и на ней учишься написанию максимально компактного кода.
;)


Автор - Peter
Дата добавления - 05 Июня 2012 в 20:44
ВадимДата: Вт, 05 Июня 2012, 21:42 | Сообщение # 12
Генератор идей
Ну вот, смотрите - допустим юзер настроил цвет полей ввода, потом настроил цвет линий сетки, после чего решил снова изменить цвет полей ввода - сделать его темнее и для этого вызвал диалог выбора цвета. Естественно, что юзер ожидает, что в диалоге выбора цвета на этот раз отобразится цвет, который он выбирал для полей ввода (ведь именно этот цвет он собирается сделать темнее), а не цвет для линий сетки, который он выбирал последним.
Сам диалог не может помнить цвет для каждого элемента интерфейса и подставлять нужные значения, нужно скриптом передать ему нужный цвет, чтобы диалог его отобразил. Для запоминания того - какой цвет заливки был выбран я и использую ини-файл.

Вот с тот код, с комментами.
.Сначала проверяем наличие файла временных настроек в темпе. В этом файле хранятся настройки диалогов выбора цвета и свойств шрифта - а именно последние выбранные юзером значения для разных частей интерфейса. В частности, нижеприведенный код - это код для загрузки и сохранения не постоянных настроек программы, а того временного значения цвета, которое было пользователем выбрано в текущем запуске программы для полей ввода, строки состояния и индикатора таблицы. Это значение цвета нужно помнить, чтобы подставлять в диалог выбора цвета.
Code
FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
.Если файла нет, то показываем диалог с цветом по умолчанию - 233,222,207.
If "[TempNC]" "=" ""
         zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
         .Если диалог не был отменен, то записываем значение цвета в ини-файл.
         If "[EntryColor]" "<>" ""
            npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
         EndIf
Else
         .Если файл есть, то проверяем создан ли уже в файле раздел "Entry" для хранения цвета - в параметре "EntryColor".
         npExisteValorIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor"
         .Если раздел не создан, то присваиваем переменной цвет по умолчанию и записываем в ини-файл.
         If "[npResultadoAccion]" "<>" "true"
              zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
              If "[EntryColor]" "<>" ""
                  npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
              EndIf
         Else
              .Если раздел создан, значит мы уже выбирали цвет, поэтому читаем из файла значение в переменную для настройки диалога выбора цвета.
              npLeerIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
              SetVar "[EntryColor]" "[npResultadoAccion]"
              zmColorBox "[EntryColor]" "" "" "R,G,B" "[EntryColor]"
              .Если диалог не был отменен, то записываем значение цвета в ини-файл.
              If "[EntryColor]" "<>" ""
                  npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
              EndIf
         EndIf
EndIf


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
СообщениеНу вот, смотрите - допустим юзер настроил цвет полей ввода, потом настроил цвет линий сетки, после чего решил снова изменить цвет полей ввода - сделать его темнее и для этого вызвал диалог выбора цвета. Естественно, что юзер ожидает, что в диалоге выбора цвета на этот раз отобразится цвет, который он выбирал для полей ввода (ведь именно этот цвет он собирается сделать темнее), а не цвет для линий сетки, который он выбирал последним.
Сам диалог не может помнить цвет для каждого элемента интерфейса и подставлять нужные значения, нужно скриптом передать ему нужный цвет, чтобы диалог его отобразил. Для запоминания того - какой цвет заливки был выбран я и использую ини-файл.

Вот с тот код, с комментами.
.Сначала проверяем наличие файла временных настроек в темпе. В этом файле хранятся настройки диалогов выбора цвета и свойств шрифта - а именно последние выбранные юзером значения для разных частей интерфейса. В частности, нижеприведенный код - это код для загрузки и сохранения не постоянных настроек программы, а того временного значения цвета, которое было пользователем выбрано в текущем запуске программы для полей ввода, строки состояния и индикатора таблицы. Это значение цвета нужно помнить, чтобы подставлять в диалог выбора цвета.
Code
FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
.Если файла нет, то показываем диалог с цветом по умолчанию - 233,222,207.
If "[TempNC]" "=" ""
         zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
         .Если диалог не был отменен, то записываем значение цвета в ини-файл.
         If "[EntryColor]" "<>" ""
            npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
         EndIf
Else
         .Если файл есть, то проверяем создан ли уже в файле раздел "Entry" для хранения цвета - в параметре "EntryColor".
         npExisteValorIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor"
         .Если раздел не создан, то присваиваем переменной цвет по умолчанию и записываем в ини-файл.
         If "[npResultadoAccion]" "<>" "true"
              zmColorBox "233,222,207" "" "" "R,G,B" "[EntryColor]"
              If "[EntryColor]" "<>" ""
                  npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
              EndIf
         Else
              .Если раздел создан, значит мы уже выбирали цвет, поэтому читаем из файла значение в переменную для настройки диалога выбора цвета.
              npLeerIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
              SetVar "[EntryColor]" "[npResultadoAccion]"
              zmColorBox "[EntryColor]" "" "" "R,G,B" "[EntryColor]"
              .Если диалог не был отменен, то записываем значение цвета в ини-файл.
              If "[EntryColor]" "<>" ""
                  npEscribirIni "[TempDir]NeoCommandsSettings.ini" "Entry" "EntryColor" "[EntryColor]"
              EndIf
         EndIf
EndIf

Автор - Вадим
Дата добавления - 05 Июня 2012 в 21:42
PeterДата: Вт, 05 Июня 2012, 21:59 | Сообщение # 13
Админ NeoBook
Quote (Вадим)
Для запоминания того - какой цвет заливки был выбран я и использую ини-файл.

А не разумнее (и проще) оперативно запоминать цвет просто в соотвествующую переменную, например, [TextEntryColor] и [GridLinesColor], ну, и если надо, то на выходе из программы запоминать (записывать) в файл настроек.
:)
Quote (Вадим)
Сначала проверяем наличие файла временных настроек в темпе.

Зачем?
Quote (Вадим)
В этом файле хранятся настройки диалогов выбора цвета и свойств шрифта - а именно последние выбранные юзером значения для разных частей интерфейса.

Все это можно прекрасно хранить в обычном текстовом файле, скажем, Settings.txt (ну, если оооочень хочется, то пусть будет Settings.ini, разницы никакой), в который предварительно сохранить переменные с помощью упомянутой функции.
Quote (Вадим)
а того временного значения цвета, которое было пользователем выбрано в текущем запуске программы для полей ввода

ЗАЧЕЕЕЕМ???
Такие вещи храняться во временных переменных, а не во внешних файлах настроек!

Воообщем, мне этого всего не понять!
%)

Как и не понять каким образом вообще ещё работает приведенный выше код.
Вадим, ты вот это:
Quote (Peter)
Команда FileExists возвращает либо TRUE, либо FALSE, но не пустоту, и потому вообще непонятно, как приведенный выше код работает.

читал?
:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
Для запоминания того - какой цвет заливки был выбран я и использую ини-файл.

А не разумнее (и проще) оперативно запоминать цвет просто в соотвествующую переменную, например, [TextEntryColor] и [GridLinesColor], ну, и если надо, то на выходе из программы запоминать (записывать) в файл настроек.
:)
Quote (Вадим)
Сначала проверяем наличие файла временных настроек в темпе.

Зачем?
Quote (Вадим)
В этом файле хранятся настройки диалогов выбора цвета и свойств шрифта - а именно последние выбранные юзером значения для разных частей интерфейса.

Все это можно прекрасно хранить в обычном текстовом файле, скажем, Settings.txt (ну, если оооочень хочется, то пусть будет Settings.ini, разницы никакой), в который предварительно сохранить переменные с помощью упомянутой функции.
Quote (Вадим)
а того временного значения цвета, которое было пользователем выбрано в текущем запуске программы для полей ввода

ЗАЧЕЕЕЕМ???
Такие вещи храняться во временных переменных, а не во внешних файлах настроек!

Воообщем, мне этого всего не понять!
%)

Как и не понять каким образом вообще ещё работает приведенный выше код.
Вадим, ты вот это:
Quote (Peter)
Команда FileExists возвращает либо TRUE, либо FALSE, но не пустоту, и потому вообще непонятно, как приведенный выше код работает.

читал?
:)

Автор - Peter
Дата добавления - 05 Июня 2012 в 21:59
ВадимДата: Вт, 05 Июня 2012, 22:12 | Сообщение # 14
Генератор идей
Quote (Peter)
Зачем?
Файл проверяется на наличие поскольку он может быть удалён каким-нибудь чистильщиком...
Quote (Peter)
Такие вещи храняться во временных переменных, а не во внешних файлах настроек!

Возможно у меня были какие-то соображения, почему нужен ини-файл (уже не помню), а может быть я просто тупанул когда решал как хранить инфу. Я подумаю над тем, чтобы хранить просто во временных переменных.
Quote (Peter)
Команда FileExists возвращает либо TRUE, либо FALSE
Читал :). А чего бы ему не работать, если файла нет, то не будет и переменной [TempNC], следовательно условие будет работать.
Quote (Peter)
Все это можно прекрасно хранить в обычном текстовом файле
Понятно, что можно, только с ини обращаться удобнее. Вот и вся разница.


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение
Quote (Peter)
Зачем?
Файл проверяется на наличие поскольку он может быть удалён каким-нибудь чистильщиком...
Quote (Peter)
Такие вещи храняться во временных переменных, а не во внешних файлах настроек!

Возможно у меня были какие-то соображения, почему нужен ини-файл (уже не помню), а может быть я просто тупанул когда решал как хранить инфу. Я подумаю над тем, чтобы хранить просто во временных переменных.
Quote (Peter)
Команда FileExists возвращает либо TRUE, либо FALSE
Читал :). А чего бы ему не работать, если файла нет, то не будет и переменной [TempNC], следовательно условие будет работать.
Quote (Peter)
Все это можно прекрасно хранить в обычном текстовом файле
Понятно, что можно, только с ини обращаться удобнее. Вот и вся разница.

Автор - Вадим
Дата добавления - 05 Июня 2012 в 22:12
PeterДата: Вт, 05 Июня 2012, 22:40 | Сообщение # 15
Админ NeoBook
Quote (Вадим)
А чего бы ему не работать, если файла нет, то не будет и переменной [TempNC], следовательно условие будет работать.

Так зачем тогда нужно было писАть такую портянку, которая работать будет заведомо наполовину?
Вадим, ты пойми: я не придираюсь, не выеживаюсь и не прикалываюсь, но просто код действительно... странный.

Quote (Вадим)
с ини обращаться удобнее

Да в чем удобнее-то?
%)
Ты попробуй ту "схему" (с SaveVars и LoadVariables), которую я предложил.
Сам потом будешь офигевать от этих заморочек с ini-файлами.
:D


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
А чего бы ему не работать, если файла нет, то не будет и переменной [TempNC], следовательно условие будет работать.

Так зачем тогда нужно было писАть такую портянку, которая работать будет заведомо наполовину?
Вадим, ты пойми: я не придираюсь, не выеживаюсь и не прикалываюсь, но просто код действительно... странный.

Quote (Вадим)
с ини обращаться удобнее

Да в чем удобнее-то?
%)
Ты попробуй ту "схему" (с SaveVars и LoadVariables), которую я предложил.
Сам потом будешь офигевать от этих заморочек с ini-файлами.
:D

Автор - Peter
Дата добавления - 05 Июня 2012 в 22:40
ВадимДата: Вт, 05 Июня 2012, 22:47 | Сообщение # 16
Генератор идей
Quote (Peter)
Так зачем тогда нужно было писАть такую портянку, которая работать будет заведомо наполовину?
Ну, собираюсь обратиться к файлу, надо сначала проверить - есть ли он :)
Quote (Peter)
я не придираюсь
Я в курсе и ценю замечания. В общем-то я и придирки ценю. Если правильно воспринимать, то от этого только польза. А правильно воспринимать я давно научился.
Quote (Peter)
Ты попробуй ту "схему" (с SaveVars и LoadVariables), которую я предложил.
Ок, попробую обязательно! Спасибо за пример!


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение
Quote (Peter)
Так зачем тогда нужно было писАть такую портянку, которая работать будет заведомо наполовину?
Ну, собираюсь обратиться к файлу, надо сначала проверить - есть ли он :)
Quote (Peter)
я не придираюсь
Я в курсе и ценю замечания. В общем-то я и придирки ценю. Если правильно воспринимать, то от этого только польза. А правильно воспринимать я давно научился.
Quote (Peter)
Ты попробуй ту "схему" (с SaveVars и LoadVariables), которую я предложил.
Ок, попробую обязательно! Спасибо за пример!

Автор - Вадим
Дата добавления - 05 Июня 2012 в 22:47
PeterДата: Вт, 05 Июня 2012, 23:29 | Сообщение # 17
Админ NeoBook
Quote (Вадим)
Ну, собираюсь обратиться к файлу, надо сначала проверить - есть ли он

Твой код:
Quote
FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
.Если файла нет, то показываем диалог с цветом по умолчанию - 233,222,207.
If "[TempNC]" "=" ""


всегда будет говорить, что файла нет, потому-что переменная [TempNC] всегда будет не пустой (в ней будет или TRUE или FALSE, но не пустота)
;)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
Ну, собираюсь обратиться к файлу, надо сначала проверить - есть ли он

Твой код:
Quote
FileExists "[TempDir]NeoCommandsSettings.ini" "[TempNC]"
.Если файла нет, то показываем диалог с цветом по умолчанию - 233,222,207.
If "[TempNC]" "=" ""


всегда будет говорить, что файла нет, потому-что переменная [TempNC] всегда будет не пустой (в ней будет или TRUE или FALSE, но не пустота)
;)

Автор - Peter
Дата добавления - 05 Июня 2012 в 23:29
ВадимДата: Вт, 05 Июня 2012, 23:32 | Сообщение # 18
Генератор идей
Quote (Peter)
переменная [TempNC] всегда будет не пустой
А, вон оно что. Я то думал, что там и пусто может быть.
Спасибо за терпение, Пётр!


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение
Quote (Peter)
переменная [TempNC] всегда будет не пустой
А, вон оно что. Я то думал, что там и пусто может быть.
Спасибо за терпение, Пётр!

Автор - Вадим
Дата добавления - 05 Июня 2012 в 23:32
mishemДата: Ср, 06 Июня 2012, 00:41 | Сообщение # 19
Эксперт форума
Quote (Вадим)
Сначала проверяем наличие файла временных настроек в темпе.

Что значит временных? Нажал ОК, для каждого элемента свой цвет в своей переменной. Пока программа работает, для каждого объекта должна быть своя переменная со своим цветом. Когда закрыл программу, тогда и сохранил настройки. Те настройки которые по умолчанию, можешь хранить как в своей программе, так и в файле. Особой разници не вижу. Если есть файл, то нет смысла хранить в программе. Хотя... Файл могут удалить.

Запустил команду zmColorBox, присвоил переменной допустим Temp тот цвет, который в данный момент используется.
Quote (Вадим)
Ну, собираюсь обратиться к файлу, надо сначала проверить - есть ли он

Проверить надо, но файл должен находится не во временной папке. ;)
Quote (Peter)
Как думаешь: почему первый вариант "умнее" второго?

Это что, задачка на смекалку? :)
Я бы написал так:
Code
zmColorBox "[EntryColor] " "" "" "R,G,B" "[TempColor]"     
If "[TempColor]" "<>" ""     
        SetVar " [EntryColor] " '[TempColor]"     
        SetObjectFill " Rectangle1 " "[EntryColor] " "Solid" "False""  
EndIf


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Вадим)
Сначала проверяем наличие файла временных настроек в темпе.

Что значит временных? Нажал ОК, для каждого элемента свой цвет в своей переменной. Пока программа работает, для каждого объекта должна быть своя переменная со своим цветом. Когда закрыл программу, тогда и сохранил настройки. Те настройки которые по умолчанию, можешь хранить как в своей программе, так и в файле. Особой разници не вижу. Если есть файл, то нет смысла хранить в программе. Хотя... Файл могут удалить.

Запустил команду zmColorBox, присвоил переменной допустим Temp тот цвет, который в данный момент используется.
Quote (Вадим)
Ну, собираюсь обратиться к файлу, надо сначала проверить - есть ли он

Проверить надо, но файл должен находится не во временной папке. ;)
Quote (Peter)
Как думаешь: почему первый вариант "умнее" второго?

Это что, задачка на смекалку? :)
Я бы написал так:
Code
zmColorBox "[EntryColor] " "" "" "R,G,B" "[TempColor]"     
If "[TempColor]" "<>" ""     
        SetVar " [EntryColor] " '[TempColor]"     
        SetObjectFill " Rectangle1 " "[EntryColor] " "Solid" "False""  
EndIf

Автор - mishem
Дата добавления - 06 Июня 2012 в 00:41
PeterДата: Ср, 06 Июня 2012, 00:48 | Сообщение # 20
Админ NeoBook
Quote (mishem)
Это что, задачка на смекалку?

На здравый смысл.
Quote (mishem)
Я бы написал так:

Т.е. попросту исключил бы первую строку с объявлением переменной.
Велика разница!
Да, можно и так, но...
Вот только, что теперь делать с переменной [TempColor]?
;)
Ведь она нахрен более не нужна и совершенно без толку засерает память.

Я понимаю, мол, "памяти много" (хотя см. чуть выше), но здравый-то смысл подсказывает, что эту переменную (более ненужную) можно и НУЖНО удалить.
:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (mishem)
Это что, задачка на смекалку?

На здравый смысл.
Quote (mishem)
Я бы написал так:

Т.е. попросту исключил бы первую строку с объявлением переменной.
Велика разница!
Да, можно и так, но...
Вот только, что теперь делать с переменной [TempColor]?
;)
Ведь она нахрен более не нужна и совершенно без толку засерает память.

Я понимаю, мол, "памяти много" (хотя см. чуть выше), но здравый-то смысл подсказывает, что эту переменную (более ненужную) можно и НУЖНО удалить.
:)

Автор - Peter
Дата добавления - 06 Июня 2012 в 00:48
mishemДата: Ср, 06 Июня 2012, 01:41 | Сообщение # 21
Эксперт форума
Quote (Peter)
что эту переменную (более ненужную) можно и НУЖНО удалить.

Это уже другой вопрос. :)

Основываясь на практике, обычно в конце приходится удалять несколько переменных. И для этого лучше (на мой взгляд) использовать в конце одну строку для удаления, чем создавать несколько локальных переменных что бы этого не делать. :)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Peter)
что эту переменную (более ненужную) можно и НУЖНО удалить.

Это уже другой вопрос. :)

Основываясь на практике, обычно в конце приходится удалять несколько переменных. И для этого лучше (на мой взгляд) использовать в конце одну строку для удаления, чем создавать несколько локальных переменных что бы этого не делать. :)

Автор - mishem
Дата добавления - 06 Июня 2012 в 01:41
PeterДата: Ср, 06 Июня 2012, 03:27 | Сообщение # 22
Админ NeoBook
Quote (mishem)
Это уже другой вопрос.

mishem, ты неисправим!
:)
Quote (mishem)
обычно в конце

В конце чего?
Жизни? Света?
:)
Если в конце одного и того же скрипта, то да, если переменных для удаления много (кстати в таких случаях я сам именно так и делаю), если же "где-нибудь" "когда-нибудь" "в другом месте", то, тоже "основываясь на практике", можно смело предположить что будет.
А будет - "ЗАБЫЛ!"
:D

И потом, я говорил, в первую очередь, про здравый смысл, а не про практику, на которой, кстати, никто и ничего не удаляет!
Ведь не я утверждал, мол, "памяти много, нафига что-то удалять"...
На всех хватит...
:)

Добавлено (06 Июня 2012, 03:27)
---------------------------------------------
Кстати, очень интресное наблюдение снова!
Уж в который раз повторяется: автор сабжа создает новую тему, задает простейший вопрос, после чего благополучно пропадает (бывает на много дней), а в теме развивается бурная дискуссия на "околосабжевые" вопросы.
:D


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (mishem)
Это уже другой вопрос.

mishem, ты неисправим!
:)
Quote (mishem)
обычно в конце

В конце чего?
Жизни? Света?
:)
Если в конце одного и того же скрипта, то да, если переменных для удаления много (кстати в таких случаях я сам именно так и делаю), если же "где-нибудь" "когда-нибудь" "в другом месте", то, тоже "основываясь на практике", можно смело предположить что будет.
А будет - "ЗАБЫЛ!"
:D

И потом, я говорил, в первую очередь, про здравый смысл, а не про практику, на которой, кстати, никто и ничего не удаляет!
Ведь не я утверждал, мол, "памяти много, нафига что-то удалять"...
На всех хватит...
:)

Добавлено (06 Июня 2012, 03:27)
---------------------------------------------
Кстати, очень интресное наблюдение снова!
Уж в который раз повторяется: автор сабжа создает новую тему, задает простейший вопрос, после чего благополучно пропадает (бывает на много дней), а в теме развивается бурная дискуссия на "околосабжевые" вопросы.
:D

Автор - Peter
Дата добавления - 06 Июня 2012 в 03:27
mishemДата: Ср, 06 Июня 2012, 03:48 | Сообщение # 23
Эксперт форума
Quote (Peter)
А будет - "ЗАБЫЛ!"

Каждому свое...
Лично я удаляю во первых для того, что б в отладчике их меньше было и не путаться. :D
Quote (Peter)
очень интресное наблюдение снова!

Это да.
У меня есть еще, свое, наблюдение.
Сидишь, ничего не делаешь, хоть бы кто на форум вылез.
Как только делом каким нибудь займеься, вопрос на вопросе. :D


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Peter)
А будет - "ЗАБЫЛ!"

Каждому свое...
Лично я удаляю во первых для того, что б в отладчике их меньше было и не путаться. :D
Quote (Peter)
очень интресное наблюдение снова!

Это да.
У меня есть еще, свое, наблюдение.
Сидишь, ничего не делаешь, хоть бы кто на форум вылез.
Как только делом каким нибудь займеься, вопрос на вопросе. :D

Автор - mishem
Дата добавления - 06 Июня 2012 в 03:48
DeveloperДата: Вт, 12 Июня 2012, 22:47 | Сообщение # 24
Любопытный
Quote (Peter)
Для этих целей в NB имеются команды SaveVariables и LoadVariables соответственно.

Я эти команды очень хорошо знаю и пользуюсь до сех-пор для хранения настроек.
Quote (Вадим)
У ini-файлов есть определенное преимущество перед обычным текстовым файлом - благодаря структуре секций (разделов) и параметров можно обращаться к записям напрямую, по имени параметра, что очень и очень удобно, поскольку можно не заботиться о числе строк в файле.

Вот именно. Я и это имел виду. Я заметил во многих программах как аккуратно хранятся настройки под секциями или разделами. Это очень удобно и можно обращаться с помощью плагинов. С помощью команды SaveVariables - хранения данных немного не удобно. Действительно храниться всё подряд. Нужное и не нужное. И чтобы грузить нужную переменную,нужно отдельно писать каждую переменную в какой нибудь текстовый файл и грузить.. Это долго.. Поэтому и создал тему,чтобы научиться хранить всё в одном с помощью одной команды - ЗАПИСЬ В ИНИ и грузить когда нужно только нужную команду или секцию :)


:mda:
 
Сообщение
Quote (Peter)
Для этих целей в NB имеются команды SaveVariables и LoadVariables соответственно.

Я эти команды очень хорошо знаю и пользуюсь до сех-пор для хранения настроек.
Quote (Вадим)
У ini-файлов есть определенное преимущество перед обычным текстовым файлом - благодаря структуре секций (разделов) и параметров можно обращаться к записям напрямую, по имени параметра, что очень и очень удобно, поскольку можно не заботиться о числе строк в файле.

Вот именно. Я и это имел виду. Я заметил во многих программах как аккуратно хранятся настройки под секциями или разделами. Это очень удобно и можно обращаться с помощью плагинов. С помощью команды SaveVariables - хранения данных немного не удобно. Действительно храниться всё подряд. Нужное и не нужное. И чтобы грузить нужную переменную,нужно отдельно писать каждую переменную в какой нибудь текстовый файл и грузить.. Это долго.. Поэтому и создал тему,чтобы научиться хранить всё в одном с помощью одной команды - ЗАПИСЬ В ИНИ и грузить когда нужно только нужную команду или секцию :)

Автор - Developer
Дата добавления - 12 Июня 2012 в 22:47
PeterДата: Ср, 13 Июня 2012, 00:47 | Сообщение # 25
Админ NeoBook
Quote (Developer)
Я эти команды очень хорошо знаю и пользуюсь до сех-пор для хранения настроек.

Quote (Developer)
С помощью команды SaveVariables - хранения данных немного не удобно. Действительно храниться всё подряд. Нужное и не нужное. И чтобы грузить нужную переменную,нужно отдельно писать каждую переменную в какой нибудь текстовый файл и грузить.. Это долго..

Developer, между прочим, я не просто так упомянул ещё во втором сообщении про функию SaveVars, которая лишена недостатка SaveVariables, и сохраняет только те переменные, которые нужны (указаны).
Но, увы, похоже, так и не вошло пока в привычку у народа читать все посты внимательно и до конца, и хотя бы попробовать то, что предлагают (уж далеко не в первый раз замечаю).

LoadVariables тоже загрузит гуртом все настройки, сохраненные в файле.
Но, во-первых, она будет грузить только нужные настройки, которые и были сохранены, а этого более-чем достаточно, а во-вторых, никто не мешает нашлепать точно такую же функцию (в самой NB) для загрузки именно и только той переменной, которая нужна в какой-нибудь конкретный момент.
У меня получилось всего 11 (16 чтоб была умнее, а можно и 23, чтобы стала совсем умная и чистоплотная, и скорость при этом не пострадает) строк кода NB "внутри функции", и 2-3 минуты работы с оформлением функции.
В результате имеем всего одну строку кода с двумя параметрами (имя файла, откуда грузить, и имя переменной), а в плагине должно быть минимум три.
;)

И точно так же, нашлепать функцию для сохранения только той (одной) переменной, которая нужна.
И никто не мешает сделать то же самое "по секциям" (можно подумать настроек сотни и тысячи, чтобы их ещё и по секциям разбивать).
:)
Только на этот раз функция предлагается к самостоятельному написанию.

А программы уже давно хранят настройки в Реестре, а не в ini-файле.

Впрочем, если таскать с собой плагин (и в реале шлепать кода ещё больше) считается удобнее и грамотнее, то...
:)
Каждый сам себе режиссер.



- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Developer)
Я эти команды очень хорошо знаю и пользуюсь до сех-пор для хранения настроек.

Quote (Developer)
С помощью команды SaveVariables - хранения данных немного не удобно. Действительно храниться всё подряд. Нужное и не нужное. И чтобы грузить нужную переменную,нужно отдельно писать каждую переменную в какой нибудь текстовый файл и грузить.. Это долго..

Developer, между прочим, я не просто так упомянул ещё во втором сообщении про функию SaveVars, которая лишена недостатка SaveVariables, и сохраняет только те переменные, которые нужны (указаны).
Но, увы, похоже, так и не вошло пока в привычку у народа читать все посты внимательно и до конца, и хотя бы попробовать то, что предлагают (уж далеко не в первый раз замечаю).

LoadVariables тоже загрузит гуртом все настройки, сохраненные в файле.
Но, во-первых, она будет грузить только нужные настройки, которые и были сохранены, а этого более-чем достаточно, а во-вторых, никто не мешает нашлепать точно такую же функцию (в самой NB) для загрузки именно и только той переменной, которая нужна в какой-нибудь конкретный момент.
У меня получилось всего 11 (16 чтоб была умнее, а можно и 23, чтобы стала совсем умная и чистоплотная, и скорость при этом не пострадает) строк кода NB "внутри функции", и 2-3 минуты работы с оформлением функции.
В результате имеем всего одну строку кода с двумя параметрами (имя файла, откуда грузить, и имя переменной), а в плагине должно быть минимум три.
;)

И точно так же, нашлепать функцию для сохранения только той (одной) переменной, которая нужна.
И никто не мешает сделать то же самое "по секциям" (можно подумать настроек сотни и тысячи, чтобы их ещё и по секциям разбивать).
:)
Только на этот раз функция предлагается к самостоятельному написанию.

А программы уже давно хранят настройки в Реестре, а не в ini-файле.

Впрочем, если таскать с собой плагин (и в реале шлепать кода ещё больше) считается удобнее и грамотнее, то...
:)
Каждый сам себе режиссер.


Автор - Peter
Дата добавления - 13 Июня 2012 в 00:47
DeveloperДата: Чт, 14 Июня 2012, 09:49 | Сообщение # 26
Любопытный
Quote (Peter)
Developer, между прочим, я не просто так упомянул ещё во втором сообщении про функию SaveVars, которая лишена недостатка SaveVariables, и сохраняет только те переменные, которые нужны (указаны).

Quote (Developer)
И чтобы грузить нужную переменную,нужно отдельно писать каждую переменную в какой нибудь текстовый файл и грузить..

Я заметил и ответил так же. Просто имеется много переменных которых нужно делить по секциям. Разницы нету между RegistryWrite и SaveVars. Поэтому хотелось бы написать их автом. аккуратно под разделами.. Но спасибо за пояснение. Я всё таки выделю больше внимание на встроенные команды,чем на сторонние плагины. Быстродействие тем более для меня важно и таскать за собой контейнер плагинов не хочется... А возможно ли без ИНИ как нибудь создавать разделы в обычный текст. файл,писать нужные переменные с SaveVars каждую индивидуально и читать потом по разделам? или лучше создать для каждого раздела разные файлы или секции или ветки в реестре?


:mda:
 
Сообщение
Quote (Peter)
Developer, между прочим, я не просто так упомянул ещё во втором сообщении про функию SaveVars, которая лишена недостатка SaveVariables, и сохраняет только те переменные, которые нужны (указаны).

Quote (Developer)
И чтобы грузить нужную переменную,нужно отдельно писать каждую переменную в какой нибудь текстовый файл и грузить..

Я заметил и ответил так же. Просто имеется много переменных которых нужно делить по секциям. Разницы нету между RegistryWrite и SaveVars. Поэтому хотелось бы написать их автом. аккуратно под разделами.. Но спасибо за пояснение. Я всё таки выделю больше внимание на встроенные команды,чем на сторонние плагины. Быстродействие тем более для меня важно и таскать за собой контейнер плагинов не хочется... А возможно ли без ИНИ как нибудь создавать разделы в обычный текст. файл,писать нужные переменные с SaveVars каждую индивидуально и читать потом по разделам? или лучше создать для каждого раздела разные файлы или секции или ветки в реестре?

Автор - Developer
Дата добавления - 14 Июня 2012 в 09:49
PeterДата: Чт, 14 Июня 2012, 14:45 | Сообщение # 27
Админ NeoBook
Developer, я - не догматик, и никому не назвзываю свое мнение (и не считаю его единственно правильным), но просто удручает ситауция, когда я, увы все чаще и чаще, вижу стремление использовать плагины (точнее - дайте/подскажите/сделайте плагин) там, где можно обойтись и без них, но для этого надо поработать головой и руками.
Ini-файлы это - ОБЫКНОВЕННЫЕ ТЕКСТОВЫЕ файлы, и ничто не мешает, зная структуру записей в файле, прочитать из него что угодно средствами NB, или создать свои (индивидуальные) файлы для хранения и чтения настроек.
Единственное ограничение - скорость чтения/записи (см.предыдущее сообщение).

Quote (Developer)
А возможно ли без ИНИ как нибудь создавать разделы в обычный текст.

Конечно можно.
Придумайте метку разделам, например #, записывайте их в файл настроек (разумеется метка+название раздела), ищите нужную метку с разделом, (потом следующую) и между метками читайте/записывайтке свои переменные как угодно, в NB для этого есть все необходимое FileInsLine, FileDelLine, и т.д.
Только вот для поиска нужной строки лучше использовать FileToVar, разбить на массив (StrParse) строк, и работать с массивом, а не непосредственно с файлом, быстрее будет.
Это все, если нужно читать/записывать по разделам.
Если же нужна только одна какая-то переменная, то можно и напрямую, без учета раздела (разницы никакой).
Для того, чтобы "унифицировать" эти процессы разумнее нашлепать специальные функции.
Я уже говорил, что на написание "основного" кода функции по загрузке конкретной переменной у меня ушло всего несколько минут (далее уже доработка и оформление).

Конечно же, для написания функций придеться потрудиться, а без этого - никак!
Как говортся "Без труда..."
:)
Ну, если же обуревает лень и нежелание думать и работать руками, то можно и плагин.
Это так... вообще.... без персоналий.



- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеDeveloper, я - не догматик, и никому не назвзываю свое мнение (и не считаю его единственно правильным), но просто удручает ситауция, когда я, увы все чаще и чаще, вижу стремление использовать плагины (точнее - дайте/подскажите/сделайте плагин) там, где можно обойтись и без них, но для этого надо поработать головой и руками.
Ini-файлы это - ОБЫКНОВЕННЫЕ ТЕКСТОВЫЕ файлы, и ничто не мешает, зная структуру записей в файле, прочитать из него что угодно средствами NB, или создать свои (индивидуальные) файлы для хранения и чтения настроек.
Единственное ограничение - скорость чтения/записи (см.предыдущее сообщение).

Quote (Developer)
А возможно ли без ИНИ как нибудь создавать разделы в обычный текст.

Конечно можно.
Придумайте метку разделам, например #, записывайте их в файл настроек (разумеется метка+название раздела), ищите нужную метку с разделом, (потом следующую) и между метками читайте/записывайтке свои переменные как угодно, в NB для этого есть все необходимое FileInsLine, FileDelLine, и т.д.
Только вот для поиска нужной строки лучше использовать FileToVar, разбить на массив (StrParse) строк, и работать с массивом, а не непосредственно с файлом, быстрее будет.
Это все, если нужно читать/записывать по разделам.
Если же нужна только одна какая-то переменная, то можно и напрямую, без учета раздела (разницы никакой).
Для того, чтобы "унифицировать" эти процессы разумнее нашлепать специальные функции.
Я уже говорил, что на написание "основного" кода функции по загрузке конкретной переменной у меня ушло всего несколько минут (далее уже доработка и оформление).

Конечно же, для написания функций придеться потрудиться, а без этого - никак!
Как говортся "Без труда..."
:)
Ну, если же обуревает лень и нежелание думать и работать руками, то можно и плагин.
Это так... вообще.... без персоналий.


Автор - Peter
Дата добавления - 14 Июня 2012 в 14:45
DeveloperДата: Пт, 15 Июня 2012, 14:26 | Сообщение # 28
Любопытный
Peter, уважаемый,большо вам спасибо за разьеснение. Извините уж меня,я новичок и не всегда подхожу с нужной стороны) Теперь буду знать.
Я попробую в свободное время поиграться с чтением\записем вашим-простым методом.
Quote (Peter)
Если же нужна только одна какая-то переменная, то можно и напрямую, без учета раздела (разницы никакой).

Это уж понятно,разделы хочу ставить в таких по где большое кол-во переменных.
Quote (Peter)
Конечно же, для написания функций придеться потрудиться, а без этого - никак!
Как говортся "Без труда..."

увы,для меня это очень тяжело - писать функцию. Мне кажется,чтобы писать функцию какую то,нужно знать по выше нб (с++ или делфи). Ну если была бы "руководство" по написанию плгинов или функций,то можно было бы и попробовать трудиться :)

Quote (Peter)
Если бы вы хоть раз посмотрели сколько приходится проделывать печатной работы в Delphi (и при этом думать), то все скрипты (или написание функции) NB покажутся сущим пустяком!

и поэтому neobook так упрощен,как знаю, нб детище делфи?!


:mda:
 
СообщениеPeter, уважаемый,большо вам спасибо за разьеснение. Извините уж меня,я новичок и не всегда подхожу с нужной стороны) Теперь буду знать.
Я попробую в свободное время поиграться с чтением\записем вашим-простым методом.
Quote (Peter)
Если же нужна только одна какая-то переменная, то можно и напрямую, без учета раздела (разницы никакой).

Это уж понятно,разделы хочу ставить в таких по где большое кол-во переменных.
Quote (Peter)
Конечно же, для написания функций придеться потрудиться, а без этого - никак!
Как говортся "Без труда..."

увы,для меня это очень тяжело - писать функцию. Мне кажется,чтобы писать функцию какую то,нужно знать по выше нб (с++ или делфи). Ну если была бы "руководство" по написанию плгинов или функций,то можно было бы и попробовать трудиться :)

Quote (Peter)
Если бы вы хоть раз посмотрели сколько приходится проделывать печатной работы в Delphi (и при этом думать), то все скрипты (или написание функции) NB покажутся сущим пустяком!

и поэтому neobook так упрощен,как знаю, нб детище делфи?!

Автор - Developer
Дата добавления - 15 Июня 2012 в 14:26
PeterДата: Пт, 15 Июня 2012, 17:08 | Сообщение # 29
Админ NeoBook
Quote (Developer)
где большое кол-во переменных

"Большое" это сколько?
10... 100. 1000...10000000...
Ради интереса, загляните в Реестр, и подсчитайте количество настроек самой NB.
;)
Quote (Developer)
для меня это очень тяжело - писать функцию

Но, ведь уроки-то по NB вы писАть взялись?
:)
В написании функций нет ничего сверхзаумного, а надо просто понять...
За каждой командой NB кроется какой-то код, который выполняет то, для чего предназначена эта команда.
Для того, чтобы код сработал и команды выполнила какое-то действие или выдала нам результат, мы вставляем в параметры команды (если таковые имеются) необходимые значения.
Вот точно так же и с функцией: вы пишите какой-то унивесальный код, ориентированный на выполнение определенной задачи, и оформляете его в виде функции (с параметрами).
В результате, вы точно так же получаете одну строку кода (для команды Call, призывающей к работе вашу функцию), в которую остается только подставить соответствующие значения параметров (аргументы).
Quote (Developer)
Ну если была бы "руководство" по написанию плгинов или функций

Необушные функции можно создавать на трех языках: на языке самой NB, на VBS, и на JavaScript.

Что касается плагинов, то это уже совершенно другое ремесло, и без знания (хотя бы в основах) таких языков как, например, Delphi или С++, об их создании даже и нечего думать.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Developer)
где большое кол-во переменных

"Большое" это сколько?
10... 100. 1000...10000000...
Ради интереса, загляните в Реестр, и подсчитайте количество настроек самой NB.
;)
Quote (Developer)
для меня это очень тяжело - писать функцию

Но, ведь уроки-то по NB вы писАть взялись?
:)
В написании функций нет ничего сверхзаумного, а надо просто понять...
За каждой командой NB кроется какой-то код, который выполняет то, для чего предназначена эта команда.
Для того, чтобы код сработал и команды выполнила какое-то действие или выдала нам результат, мы вставляем в параметры команды (если таковые имеются) необходимые значения.
Вот точно так же и с функцией: вы пишите какой-то унивесальный код, ориентированный на выполнение определенной задачи, и оформляете его в виде функции (с параметрами).
В результате, вы точно так же получаете одну строку кода (для команды Call, призывающей к работе вашу функцию), в которую остается только подставить соответствующие значения параметров (аргументы).
Quote (Developer)
Ну если была бы "руководство" по написанию плгинов или функций

Необушные функции можно создавать на трех языках: на языке самой NB, на VBS, и на JavaScript.

Что касается плагинов, то это уже совершенно другое ремесло, и без знания (хотя бы в основах) таких языков как, например, Delphi или С++, об их создании даже и нечего думать.

Автор - Peter
Дата добавления - 15 Июня 2012 в 17:08
DeveloperДата: Пт, 15 Июня 2012, 20:09 | Сообщение # 30
Любопытный
Quote (Peter)
Необушные функции можно создавать на трех языках: на языке самой NB

scared Существует ли на форуме готовый пример функции написанная на нб? Для меня будет уроком.. В таком случаи,я постараюсь..

Quote (Peter)
Но, ведь уроки-то по NB вы писАть взялись?

Потому,что я хоть понимаю что писАть и как. Но с функциями не сталкивался никогда. Были бы хоть примеры или статьи,то не было бы вопросов. Да и ещё хотелось бы добавить: Я буду писАть для себя и для учеников вкратце базовые понятие. Ведь сам так научился. Зная базовые понятия,я начал изучать нб поглубже. Мне очень нравиться даже убивать время на нб,на само-обучение.. :)

PS: Поясните ещё пожалуйста,что такое SDK написания плагинов? где то встречал у вас на сайте.


:mda:

Сообщение отредактировано
Developer - Пт, 15 Июня 2012, 20:10
 
Сообщение
Quote (Peter)
Необушные функции можно создавать на трех языках: на языке самой NB

scared Существует ли на форуме готовый пример функции написанная на нб? Для меня будет уроком.. В таком случаи,я постараюсь..

Quote (Peter)
Но, ведь уроки-то по NB вы писАть взялись?

Потому,что я хоть понимаю что писАть и как. Но с функциями не сталкивался никогда. Были бы хоть примеры или статьи,то не было бы вопросов. Да и ещё хотелось бы добавить: Я буду писАть для себя и для учеников вкратце базовые понятие. Ведь сам так научился. Зная базовые понятия,я начал изучать нб поглубже. Мне очень нравиться даже убивать время на нб,на само-обучение.. :)

PS: Поясните ещё пожалуйста,что такое SDK написания плагинов? где то встречал у вас на сайте.

Автор - Developer
Дата добавления - 15 Июня 2012 в 20:09
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: