Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Использование списка
legoДата: Вс, 26 Октября 2008, 09:20 | Сообщение # 1
Привет Всем!
Извиняюсь если что не так.
Пробую NeoBook 5.5.4.Программа
показалась интересной,но вот ни как не
пойму,что делаю не так?
При использовании списка, указываю программы (это просто будет сборник CD).
Уверяю вас ни о какой комерции речи не идет,лично для себя решил оформить CD.
Ну так вот, указываю пути прог. Потом для эксперемента запускаю проект,и при
нажити на выбронную прогу в списке открываются одновременно все проги.
Как быть ? Что делаю не так? Подскажите .
 
СообщениеПривет Всем!
Извиняюсь если что не так.
Пробую NeoBook 5.5.4.Программа
показалась интересной,но вот ни как не
пойму,что делаю не так?
При использовании списка, указываю программы (это просто будет сборник CD).
Уверяю вас ни о какой комерции речи не идет,лично для себя решил оформить CD.
Ну так вот, указываю пути прог. Потом для эксперемента запускаю проект,и при
нажити на выбронную прогу в списке открываются одновременно все проги.
Как быть ? Что делаю не так? Подскажите .

Автор - lego
Дата добавления - 26 Октября 2008 в 09:20
PeterДата: Вс, 26 Октября 2008, 13:57 | Сообщение # 2
Админ NeoBook
Quote (lego)
Пробую NeoBook 5.5.4.Программа
показалась интересной

Добро пожаловать в NeoBook! Правильный выбор!

Quote (lego)
Что делаю не так? Подскажите

С удовольствием подсказал бы, да вот только не вижу примера вашего кода. cry
Если предоставите его , то можно будет понять ЧТО не так..


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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (lego)
Пробую NeoBook 5.5.4.Программа
показалась интересной

Добро пожаловать в NeoBook! Правильный выбор!

Quote (lego)
Что делаю не так? Подскажите

С удовольствием подсказал бы, да вот только не вижу примера вашего кода. cry
Если предоставите его , то можно будет понять ЧТО не так..

Автор - Peter
Дата добавления - 26 Октября 2008 в 13:57
legoДата: Вс, 26 Октября 2008, 15:38 | Сообщение # 3
Quote привет!
Так в том-то и дело , что незнаю
что писать в коде !??
Если бы вы показали на маленьком
примере. Идея в общем-то простая: запускаеш диск,
появляется Autorun-меню,а в нем список выбора , окошко
для отображения описания выбронной проги , внизу кнопки -запустить,
серийник,русификац. и т.д.
Что писать,например, в коде списка выбора,что бы при выделении
элемента открывался текст с описанием, а при нажатии запустить-запускался
установщик.Как связать этот выбранный элемент с кнопкой запустить и все такое.
Может быть прошу слишком многое,почти готовый код,но где взять пример ,что бы разобраться.
 
СообщениеQuote привет!
Так в том-то и дело , что незнаю
что писать в коде !??
Если бы вы показали на маленьком
примере. Идея в общем-то простая: запускаеш диск,
появляется Autorun-меню,а в нем список выбора , окошко
для отображения описания выбронной проги , внизу кнопки -запустить,
серийник,русификац. и т.д.
Что писать,например, в коде списка выбора,что бы при выделении
элемента открывался текст с описанием, а при нажатии запустить-запускался
установщик.Как связать этот выбранный элемент с кнопкой запустить и все такое.
Может быть прошу слишком многое,почти готовый код,но где взять пример ,что бы разобраться.

Автор - lego
Дата добавления - 26 Октября 2008 в 15:38
PeterДата: Вс, 26 Октября 2008, 20:49 | Сообщение # 4
Админ NeoBook
Quote (lego)
Идея в общем-то простая: запускаеш диск,
появляется Autorun-меню,а в нем список выбора , окошко
для отображения описания выбронной проги , внизу кнопки -запустить,
серийник,русификац. и т.д.

Привет ещё раз!
Идея, в общем, понятна...
Но требуется уточнение: авторан будет для какого-то конкретного диска, или нужна универсальная оболочка, способная работать с любым диском?
Дело в том, что решения в первом и во втором случаях будут совершенно разные - в первом можно ограничиться простым конретным советом, а во втором потребуется уже целый комплекный урок с примером...
Ну, а пока...
Quote (lego)
Что писать,например, в коде списка выбора,что бы при выделении
элемента открывался текст с описанием

Что конкретно содержится в строке списка: имя текстового файла (описание) с путем, или же название программы? Что из себя представяляет файл описания?
Quote (lego)
а при нажатии запустить-запускался
установщик.

Самое простейшее:
Run "Полное имя файла-установщика с путем " "" "Normal" "" ""
Но тут могут быть и варианты запуска в зависимости от поставленных целей и используемых опций данной команды.
Quote (lego)
Как связать этот выбранный элемент с кнопкой запустить и все такое.

Опять-таки: ЧТО ИМЕННО должен содержать список выбора в объекте ListBox - названия программ, или же только пути к файлам?

Я не придираюсь и не выеживаюсь.
Поймите правильно - вариантом организации и опций меню автозапуска может быть много.
В данном (вашем) случае важно ЧТО будет отображаться в ListBox...
Т.е. каким образом вы загружаете в ListBox список строк, и ЧТО в строке должно содержаться?


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

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

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


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

Привет ещё раз!
Идея, в общем, понятна...
Но требуется уточнение: авторан будет для какого-то конкретного диска, или нужна универсальная оболочка, способная работать с любым диском?
Дело в том, что решения в первом и во втором случаях будут совершенно разные - в первом можно ограничиться простым конретным советом, а во втором потребуется уже целый комплекный урок с примером...
Ну, а пока...
Quote (lego)
Что писать,например, в коде списка выбора,что бы при выделении
элемента открывался текст с описанием

Что конкретно содержится в строке списка: имя текстового файла (описание) с путем, или же название программы? Что из себя представяляет файл описания?
Quote (lego)
а при нажатии запустить-запускался
установщик.

Самое простейшее:
Run "Полное имя файла-установщика с путем " "" "Normal" "" ""
Но тут могут быть и варианты запуска в зависимости от поставленных целей и используемых опций данной команды.
Quote (lego)
Как связать этот выбранный элемент с кнопкой запустить и все такое.

Опять-таки: ЧТО ИМЕННО должен содержать список выбора в объекте ListBox - названия программ, или же только пути к файлам?

Я не придираюсь и не выеживаюсь.
Поймите правильно - вариантом организации и опций меню автозапуска может быть много.
В данном (вашем) случае важно ЧТО будет отображаться в ListBox...
Т.е. каким образом вы загружаете в ListBox список строк, и ЧТО в строке должно содержаться?


Автор - Peter
Дата добавления - 26 Октября 2008 в 20:49
legoДата: Пн, 27 Октября 2008, 13:52 | Сообщение # 5
Привет Peter!
Вы как поняли я в этом деле "Чайник". И прошу не судите строго.Похоже эта тема переростает в тему по созданию
авторана.Тогда вопрос такой. Конкретный диск - это то что я собрал,допустим,на диске D в папке Сборник , которая
содержит папки с программами Графика,Система,Интернет.Это конкретный диск ,правильно я понял? Если это так ,
то давайте пока остановимся на первом случае.
Вы спрашиваете:Что конкретно содержится в строке списка: имя текстового файла (описание) с путем, или же название программы? Что из себя представяляет файл описания? Видите-ли для меня еще не совсем понятно в чем разница,что
будет если я укажу имя текстового файла (описание) с путем, или же название программы.Одно могу сказать файл
описания-txt.Хорошо было бы организовать уроки для особо тугодумных как я.
Далее: в списка укажем допустим название программ,но выбрав эту строку в соседнем окне отображается файл описания -txt.(Это при одном щелчке). Для этого указываем путь к файлу описания,так? Но нужно еще запустить установщик через кнопку,т.е
кнопке указываем путь к установщику,так? А если еще и серийник , русификатор - как?
Хоть убейте меня,но не могу понять ; в списке 10-к програм ,а кнопка-та "установить" -одна ?
 
СообщениеПривет Peter!
Вы как поняли я в этом деле "Чайник". И прошу не судите строго.Похоже эта тема переростает в тему по созданию
авторана.Тогда вопрос такой. Конкретный диск - это то что я собрал,допустим,на диске D в папке Сборник , которая
содержит папки с программами Графика,Система,Интернет.Это конкретный диск ,правильно я понял? Если это так ,
то давайте пока остановимся на первом случае.
Вы спрашиваете:Что конкретно содержится в строке списка: имя текстового файла (описание) с путем, или же название программы? Что из себя представяляет файл описания? Видите-ли для меня еще не совсем понятно в чем разница,что
будет если я укажу имя текстового файла (описание) с путем, или же название программы.Одно могу сказать файл
описания-txt.Хорошо было бы организовать уроки для особо тугодумных как я.
Далее: в списка укажем допустим название программ,но выбрав эту строку в соседнем окне отображается файл описания -txt.(Это при одном щелчке). Для этого указываем путь к файлу описания,так? Но нужно еще запустить установщик через кнопку,т.е
кнопке указываем путь к установщику,так? А если еще и серийник , русификатор - как?
Хоть убейте меня,но не могу понять ; в списке 10-к програм ,а кнопка-та "установить" -одна ?

Автор - lego
Дата добавления - 27 Октября 2008 в 13:52
PeterДата: Пн, 27 Октября 2008, 15:52 | Сообщение # 6
Админ NeoBook
Так, сейчас очень коротенько... Времени в обрез, сорри!...
В первую очередь настоятельно советую внимательно прочесть вот ЭТО!
Работа с переменными в NeoBook (да и вообще со скриптами) - основа основ!
Иначе можно даже и не открывать программу.
Quote (lego)
я в этом деле "Чайник".

Но только не надо пугаться, т.к. единожды ухватив суть NeoBook, все дальнейшее пойдет "как по маслу"! Я уже где-то отмечал это.
NB устроена настолько уникально и логично, что чем глубже вникаешь в программу, тем меньше непоняток остается, т.к. NB приучает ДУМАТЬ, а не банально передирать чужой код! И не просто думать, а ещё и получать желаемый результат!
Но все это - лирика...
Далее...
Уже есть нечто ПОДОБНОЕ из того ЧТО вам требуется. Правда, на другую тему, но принцип работы с объектами ListBox будет в целом понятен!

Покавыряйте пока ЭТОТ пример, а уже вечером можно будет и по-подробнее..


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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеТак, сейчас очень коротенько... Времени в обрез, сорри!...
В первую очередь настоятельно советую внимательно прочесть вот ЭТО!
Работа с переменными в NeoBook (да и вообще со скриптами) - основа основ!
Иначе можно даже и не открывать программу.
Quote (lego)
я в этом деле "Чайник".

Но только не надо пугаться, т.к. единожды ухватив суть NeoBook, все дальнейшее пойдет "как по маслу"! Я уже где-то отмечал это.
NB устроена настолько уникально и логично, что чем глубже вникаешь в программу, тем меньше непоняток остается, т.к. NB приучает ДУМАТЬ, а не банально передирать чужой код! И не просто думать, а ещё и получать желаемый результат!
Но все это - лирика...
Далее...
Уже есть нечто ПОДОБНОЕ из того ЧТО вам требуется. Правда, на другую тему, но принцип работы с объектами ListBox будет в целом понятен!

Покавыряйте пока ЭТОТ пример, а уже вечером можно будет и по-подробнее..


Автор - Peter
Дата добавления - 27 Октября 2008 в 15:52
legoДата: Вт, 28 Октября 2008, 18:00 | Сообщение # 7
Спасибо Peter будем разбираться.

Добавлено (28 Октябрь 2008, 18:00)
---------------------------------------------
Привет Peter!
Покопался в примере PlayList in NeoBook , пока еще темный лес.И есть куча вопросов по этому примеру , да и
вообще по командам и переменным.Вот кусок кода из этого примера для кнопки PushButton1 при событии LeftClick:
1.DefineVar "[FileOpen]" "String" "" "Local" ""
2.FileOpenBox "Добавить в текущий список воспроизведения" "Аудиофайлы|*.mp3;*.wav;*.ogg; *.wma;*.mid" "[ClipFolder]" "[FileOpen]" "Multiple"
3.If "[FileOpen]" "=" ""
4.Return
5.EndIf
6.StrParse "[FileOpen]" ";" "[CName]" "[NOF]"
7.ExtractFilePath "[CName1]" "[ClipFolder]"
8.DefineVar "[n]" "Integer" "" "Local" "1"
9.While "[n]" "<=" "[NOF]" 10. ListBoxAddItem "PathClip" "0" "[CName[n]]"
11. ListBoxSize "PathClip" "[Size]"
12. ExtractFileName "[CName[n]]" "[Name[n]]"
13. ListBoxAddItem "NameClip" "0" "[Size]. [Name[n]]"
14. Math "[n] +1" "" "[n]"
15.EndWhile
16.SetVar "[TotalClip]" "[Size]"
17.DeleteArray "[CName]" "All"
18.DeleteArray "[Name]" "All"

Хотелось бы по подробнее что обозночает каждая строка !
1.Из статьи я понял что 1-я строка- это обьявление локальной строковой переменной имя которой FileOpen, в принципе
можно задать любое уникальное имя,а я первое что подумал что FileOpen - команда; открыть файл.Просто потом мы
используем это имя переменно для различных операций .
2.Команда FileOpenBox - (Получить имя файла при помощи стандартного диалогового окна Windows).
Иными словами при нажатии на кнопку "Добавить" открывается проводник Windows.
Понятно что строка "Аудиофайлы|*.mp3;*.wav;*.ogg; *.wma;*.mid" указаны расширения файлов, которые
можно открыть с помощью проводника.Но что означает I* ?(Кстати, а как его правилно с клавиатуры ввести? тут изобразил engl. I.?). А что это за имя переменной "[ClipFolder]" и для чего? А что такое "Multiple" ??? Откуда он взят ?
3.Строка создания цикла If "[FileOpen]" "=" "" . Зачем создается здесь цикл на эту переменную , в чем смысл?
И так далее.
Я наверное безнадежный идиот. Ну извините больше некуда обратиться.

 
СообщениеСпасибо Peter будем разбираться.

Добавлено (28 Октябрь 2008, 18:00)
---------------------------------------------
Привет Peter!
Покопался в примере PlayList in NeoBook , пока еще темный лес.И есть куча вопросов по этому примеру , да и
вообще по командам и переменным.Вот кусок кода из этого примера для кнопки PushButton1 при событии LeftClick:
1.DefineVar "[FileOpen]" "String" "" "Local" ""
2.FileOpenBox "Добавить в текущий список воспроизведения" "Аудиофайлы|*.mp3;*.wav;*.ogg; *.wma;*.mid" "[ClipFolder]" "[FileOpen]" "Multiple"
3.If "[FileOpen]" "=" ""
4.Return
5.EndIf
6.StrParse "[FileOpen]" ";" "[CName]" "[NOF]"
7.ExtractFilePath "[CName1]" "[ClipFolder]"
8.DefineVar "[n]" "Integer" "" "Local" "1"
9.While "[n]" "<=" "[NOF]" 10. ListBoxAddItem "PathClip" "0" "[CName[n]]"
11. ListBoxSize "PathClip" "[Size]"
12. ExtractFileName "[CName[n]]" "[Name[n]]"
13. ListBoxAddItem "NameClip" "0" "[Size]. [Name[n]]"
14. Math "[n] +1" "" "[n]"
15.EndWhile
16.SetVar "[TotalClip]" "[Size]"
17.DeleteArray "[CName]" "All"
18.DeleteArray "[Name]" "All"

Хотелось бы по подробнее что обозночает каждая строка !
1.Из статьи я понял что 1-я строка- это обьявление локальной строковой переменной имя которой FileOpen, в принципе
можно задать любое уникальное имя,а я первое что подумал что FileOpen - команда; открыть файл.Просто потом мы
используем это имя переменно для различных операций .
2.Команда FileOpenBox - (Получить имя файла при помощи стандартного диалогового окна Windows).
Иными словами при нажатии на кнопку "Добавить" открывается проводник Windows.
Понятно что строка "Аудиофайлы|*.mp3;*.wav;*.ogg; *.wma;*.mid" указаны расширения файлов, которые
можно открыть с помощью проводника.Но что означает I* ?(Кстати, а как его правилно с клавиатуры ввести? тут изобразил engl. I.?). А что это за имя переменной "[ClipFolder]" и для чего? А что такое "Multiple" ??? Откуда он взят ?
3.Строка создания цикла If "[FileOpen]" "=" "" . Зачем создается здесь цикл на эту переменную , в чем смысл?
И так далее.
Я наверное безнадежный идиот. Ну извините больше некуда обратиться.


Автор - lego
Дата добавления - 28 Октября 2008 в 18:00
PeterДата: Вт, 28 Октября 2008, 22:13 | Сообщение # 8
Админ NeoBook
Салют, Lego!
Да, для новичка сложноват код, но никуда тут не денешься, т.к. подобные "конструкции" - рутина в NB.
Но не боги горшки обжигают, и со временем вы научитесь творить гораздо более сложные и интересные "произведения", нежели банальные автораны!
NeoBook позволяет создавать мультимедийные (и не только) приложения практически неограниченного уровня сложности!
Ещё во вкус войдете!...
Итак, по-порядку...
Code
1.DefineVar "[FileOpen]" "String" "" "Local" ""

Здесь мы объявляем локальную строковую переменную, в которую будет занесено имя выбранного файла. Переменная [FileOpen] должна быть пустой на момент открытия диалога выбора файлов. Почему? Это будет понятно чуть позже.

Code
2.FileOpenBox "Добавить в текущий список воспроизведения" "Аудиофайлы|*.mp3;*.wav;*.ogg; *.wma;*.mid" "[ClipFolder]" "[FileOpen]" "Multiple"

Это - диалог выбора файлов. С первыми двумя параметрами, как я вижу, вы разобрались.
[ClipFolder] - это переменная, содержащая полное имя (с путем) начальной открываемой папки для выбоа файлов. В принципе, этот параметр можно оставить и пустым, но тогда и этот, и все остальные (любые другие) диалоги выбора файлов в программе будут "стартовать" с последней открытой ранее папки, что согласитесь далеко не всегда удобно. Поэтому, применяя этот параметр, мы сможем открыть диалог выбора (сохранения) файлов в любой нужной нам папке (каталоге).
Следуюий параметр - ранее объявленная переменная [FileOpen] . Вот в неё-то и будет помещено имя выбранного файла (или ИМЕНА сразу НЕСКОЛЬКИХ файлов в случае их множественного выбора. Для этого, кстати и применяют, идущий далее, параметр Multiple, указывающий на эту возможность выбора).
Пока всё достаточно просто. Идем далее...
Code
If "[FileOpen]" "=" ""              
               Return              
EndIf

Это - условная иструкция выбора. Для чего всё это тут нужно?
Если в диалоге выбора файлов (предыдущая строка) выбор НЕ сделан, то весь далнейший ход скрипта кнопки становится бессмысленным и даже вредным, поэтому нам нужно будет его прервать - чего ради зря время тратить, да и программу в изумление вводить?
Эти три строчки будут работат так:
Если (If) файл(ы) не выбран(ы), т.е переменная [FileOpen] равна "пустоте" (а она в самом начале хода скрипта равна "пустоте", т.к. мы объявили её пустой, помните?), то выполняется строка, содержащая команду Return. Эта команда прерывает на этом месте выполнение текущего скрипта, и "выводит" программу из него. Иными словами - всё, что идет после команды Return НЕ БУДЕТ выполнено. Но только в ТЕКУЩЕМ скрипте (в нашем случае - скрипте кнопки), а не дальнейшего хода выполнения программы в целом.
EndIf - строка указываюшая программе, что работа над выбором "ЧТО ДЕЛАТЬ?" закончена, и можно двигаться дальше. Это произойдет в том случае, если переменная [FileOpen] окажется НЕ пустой (файлы выбраны), и команда Return НЕ будет выполнена.

Эх, елки-палки... Настрочил я уже немало, а рассмотрел только самые элементарнейшие вещи в этом скрипте. Что касаемо устройства и смысла работы команды IF..ELSE..END (инструкция выбора), то настоятельно рекомендую почитать русскоязычный справочный файл к NB версии 5.5.4. Его можно скачать вот с этой странички. Он, кстати, весьма недурно переведён, за что ещё раз благодарности Chelsi !
Так, покуда "перекур", однако...
Всё дальнейшее требует более внятного и детального рассмотрения, т.к. тут уже идет работа с массивами, а это с наскока не объяснить.
Да и перетрубацию компу мне надо делать (мамку менять со всеми вытекающими...).
Попробуйте пока поупражняться с "IF-ELSE-ENDIF". Это очень и очень полезно будет.
Если у вас не пропадет интерес к программе (надеюсь что так и будет), то пообщаться на этих страничках нам с вами придется еще немало!
На этом позволю себе временно откланяться!

Надеюсь до завтрашнего вечера. (если успею комп в порядок привести)... biggrin


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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеСалют, Lego!
Да, для новичка сложноват код, но никуда тут не денешься, т.к. подобные "конструкции" - рутина в NB.
Но не боги горшки обжигают, и со временем вы научитесь творить гораздо более сложные и интересные "произведения", нежели банальные автораны!
NeoBook позволяет создавать мультимедийные (и не только) приложения практически неограниченного уровня сложности!
Ещё во вкус войдете!...
Итак, по-порядку...
Code
1.DefineVar "[FileOpen]" "String" "" "Local" ""

Здесь мы объявляем локальную строковую переменную, в которую будет занесено имя выбранного файла. Переменная [FileOpen] должна быть пустой на момент открытия диалога выбора файлов. Почему? Это будет понятно чуть позже.

Code
2.FileOpenBox "Добавить в текущий список воспроизведения" "Аудиофайлы|*.mp3;*.wav;*.ogg; *.wma;*.mid" "[ClipFolder]" "[FileOpen]" "Multiple"

Это - диалог выбора файлов. С первыми двумя параметрами, как я вижу, вы разобрались.
[ClipFolder] - это переменная, содержащая полное имя (с путем) начальной открываемой папки для выбоа файлов. В принципе, этот параметр можно оставить и пустым, но тогда и этот, и все остальные (любые другие) диалоги выбора файлов в программе будут "стартовать" с последней открытой ранее папки, что согласитесь далеко не всегда удобно. Поэтому, применяя этот параметр, мы сможем открыть диалог выбора (сохранения) файлов в любой нужной нам папке (каталоге).
Следуюий параметр - ранее объявленная переменная [FileOpen] . Вот в неё-то и будет помещено имя выбранного файла (или ИМЕНА сразу НЕСКОЛЬКИХ файлов в случае их множественного выбора. Для этого, кстати и применяют, идущий далее, параметр Multiple, указывающий на эту возможность выбора).
Пока всё достаточно просто. Идем далее...
Code
If "[FileOpen]" "=" ""              
               Return              
EndIf

Это - условная иструкция выбора. Для чего всё это тут нужно?
Если в диалоге выбора файлов (предыдущая строка) выбор НЕ сделан, то весь далнейший ход скрипта кнопки становится бессмысленным и даже вредным, поэтому нам нужно будет его прервать - чего ради зря время тратить, да и программу в изумление вводить?
Эти три строчки будут работат так:
Если (If) файл(ы) не выбран(ы), т.е переменная [FileOpen] равна "пустоте" (а она в самом начале хода скрипта равна "пустоте", т.к. мы объявили её пустой, помните?), то выполняется строка, содержащая команду Return. Эта команда прерывает на этом месте выполнение текущего скрипта, и "выводит" программу из него. Иными словами - всё, что идет после команды Return НЕ БУДЕТ выполнено. Но только в ТЕКУЩЕМ скрипте (в нашем случае - скрипте кнопки), а не дальнейшего хода выполнения программы в целом.
EndIf - строка указываюшая программе, что работа над выбором "ЧТО ДЕЛАТЬ?" закончена, и можно двигаться дальше. Это произойдет в том случае, если переменная [FileOpen] окажется НЕ пустой (файлы выбраны), и команда Return НЕ будет выполнена.

Эх, елки-палки... Настрочил я уже немало, а рассмотрел только самые элементарнейшие вещи в этом скрипте. Что касаемо устройства и смысла работы команды IF..ELSE..END (инструкция выбора), то настоятельно рекомендую почитать русскоязычный справочный файл к NB версии 5.5.4. Его можно скачать вот с этой странички. Он, кстати, весьма недурно переведён, за что ещё раз благодарности Chelsi !
Так, покуда "перекур", однако...
Всё дальнейшее требует более внятного и детального рассмотрения, т.к. тут уже идет работа с массивами, а это с наскока не объяснить.
Да и перетрубацию компу мне надо делать (мамку менять со всеми вытекающими...).
Попробуйте пока поупражняться с "IF-ELSE-ENDIF". Это очень и очень полезно будет.
Если у вас не пропадет интерес к программе (надеюсь что так и будет), то пообщаться на этих страничках нам с вами придется еще немало!
На этом позволю себе временно откланяться!

Надеюсь до завтрашнего вечера. (если успею комп в порядок привести)... biggrin


Автор - Peter
Дата добавления - 28 Октября 2008 в 22:13
legoДата: Ср, 29 Октября 2008, 00:12 | Сообщение # 9
Вот спасибо Peter , потихоньку что-то проясняется. Но не думал , что это сложный код.
Справочку я скачал. Команды все есть. Но вот никак не понять самой логики команд.
Буду дальше ползти.
Пока , до завтра.
 
СообщениеВот спасибо Peter , потихоньку что-то проясняется. Но не думал , что это сложный код.
Справочку я скачал. Команды все есть. Но вот никак не понять самой логики команд.
Буду дальше ползти.
Пока , до завтра.

Автор - lego
Дата добавления - 29 Октября 2008 в 00:12
PeterДата: Сб, 01 Ноября 2008, 01:32 | Сообщение # 10
Админ NeoBook
Подзастрял я с апгрейдом компутера.
Продолжим....

Code
StrParse "[FileOpen]" ";" "[CName]" "[NOF]"

Разбор (парсирование) строки. В случае множественного выбора файлов переменная [FileOpen] будет представлять собой , грубо говоря, длиннющую строку, состоящую из полных имен (с путем) выбранных файлов, разделенных знаком ";". Команда StrParse и производит разделение переменной [FileOpen] на имена отдельных файлов и помещает их в массив переменных с именем [CName] . Параллельно (по результатам разделения) общее количество полученных отдельных имен файлов (строк), т.е. размер массива, помещается в переменную [NOF].
Предположим, что мы выбрали 4 текстовых файла (Вася, Миша, Маша, Даша) на диске С в папке Data. В результате переменная [FileOpen] будет иметь следующий вид:
[FileOpen] = C:\Data\Вася.txt;C:\Data\Миша.txt;C:\Data\Маша.txt;C:\Data\Даша.txt
После обработки этой переменной командой StrParse с указанными аргументами, мы получим такой результат:
[CName1] = C:\Data\Вася.txt
[CName2] = C:\Data\Миша.txt
[CName3] = C:\Data\Маша.txt
[CName4] = C:\Data\Даша.txt
[NOF] = 4

Примечание: если мы выберем только один файл, например "Маша", то на выходе будет:
[CName1] = C:\Data\Маша.txt
[NOF] = 1

Далее...

Code
7.ExtractFilePath "[CName1]" "[ClipFolder]"

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

Code
8.DefineVar "[n]" "Integer" "" "Local" "1"

Объявляем целочисленную переменную и присваиваем ей значение "единица", Эта локльная переменная послужит нам в качестве своеобразного "счетчика", назначение которого станет ясно по-позжее...

Вот теперь добрались до самого интересного - команда While...
Это - цикл с предусловием, т.е круговое (повторяющееся) выполнение какой-либо команды (или их набора) пока соблюдается определенное условие.
В нашем случае:

Code
9.While "[n]" "<=" "[NOF]"

Здесь это "звучит" так: до тех пор, пока переменная [n] будет меньше или равна, т.е. не больше, переменной [NOF] будет циклически выполняться набор ВСЕХ команд:

Code
10. ListBoxAddItem "PathClip" "0" "[CName[n]]"             
11. ListBoxSize "PathClip" "[Size]"             
12. ExtractFileName "[CName[n]]" "[Name[n]]"             
13. ListBoxAddItem "NameClip" "0" "[Size]. [Name[n]]"             
14. Math "[n] +1" "" "[n]"

идущих до строки EndWhile (конец цикла)

Code
15.EndWhile

Добавлено (01 Ноябрь 2008, 01:32)
---------------------------------------------
Небольшое пояснение...
Т.к. выбирать в списке файлы, ориентрируясь на их полные имена (с путем) крайне неудобно, то есть смысл создать список, в котором отображаются лишь непосредственно имена файлов, а их пути (или полные имена) скрыты в другом месте. Эту задачу можно решить разными способами, но наиболее простой и удобный (хоть и возможно менее скорострельный) - создать ДВА синхронизированных между собой списка (ListBox), в одном их которых держать полные имена файлов, а в другом только их "удобочитабельные" имена. Как синхронно работают эти списки можно понять из команд, заложенных в их события, а сейчас разговор только о "заполнении" списков, что и будет сделано в цикле.
В этом примере имеется два списка: PathClip - для полных имен файлов, NameClip - для урезанных (а НЕ ОБРЕЗАННЫХ, т.к. это уже из другой "оперы" biggrin ) имен.
Итак, цикл запущен...

Code
10. ListBoxAddItem "PathClip" "0" "[CName[n]]"

Помещаем в "полный" список PathClip имя файла из переменной [CName[n]]. Поскольку переменная [n] в начале цикла равна единице, то в список будет помещен файл из [CName1], т.е. C:\Data\Вася.txt. Второй параметр команды ListBoxAddItem равен "нулю", что означает "добавить строку в конец списка". И не важно сколько в списке уже имеется строк - всегда будет добавлено в конец списка.

Code
11. ListBoxSize "PathClip" "[Size]"

Здесь просто определяется количество имеющихся пунктов в списке.

Code
12. ExtractFileName "[CName[n]]" "[Name[n]]"

Выделяем из "полного" собственное имя файла (Вася.txt), и

Code
13. ListBoxAddItem "NameClip" "0" "[Size]. [Name[n]]"

помещаем его во второй список, но не просто только имя, а добавляем к нему порядковый номер - [Size]. [Name[n]]. Т.к. переменная [Size] при первой итерации цикла равна 1 (если список ранее был пустой), то в первую строку списка NameClip будет помещено "1. Вася.txt".

Code
14. Math "[n] +1" "" "[n]"

Тут просто увеличиваем значение счетчика на единицу, т.е делаем переменную [n] равной 2.

Цикл, он умный...
Видит, что [n] все ещё НЕ БОЛЬШЕ [NOF], и запускается по новому кругу, но уже при [n] = 2...
И так будет происходить до тех пор пока [n] не станет больше [NOF], т.е. больше 4

Тогда сработает:

Code
15.EndWhile

завершение цикла.
Кстати, для "преждевременного" выхода из цикла существует специальная команда ExitWhile.
Кроме того, в NB есть ещё и другие команды организации циклов, но это уже отдельная тема.

Code
16.SetVar "[TotalClip]" "[Size]"

Показываем в объекте, связанным с [TotalClip] (в данном примере - текстовой надписи) общее количество файлов.

Code
17.DeleteArray "[CName]" "All"             
18.DeleteArray "[Name]" "All"

Ну а здесь просто "уборка" - освобождаем оперативную память компьютера от уже ставших ненужными массивов...

Вот, собственно, и всё по данному скрипту.
Как видим - ничего заумного!


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

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

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


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

Code
StrParse "[FileOpen]" ";" "[CName]" "[NOF]"

Разбор (парсирование) строки. В случае множественного выбора файлов переменная [FileOpen] будет представлять собой , грубо говоря, длиннющую строку, состоящую из полных имен (с путем) выбранных файлов, разделенных знаком ";". Команда StrParse и производит разделение переменной [FileOpen] на имена отдельных файлов и помещает их в массив переменных с именем [CName] . Параллельно (по результатам разделения) общее количество полученных отдельных имен файлов (строк), т.е. размер массива, помещается в переменную [NOF].
Предположим, что мы выбрали 4 текстовых файла (Вася, Миша, Маша, Даша) на диске С в папке Data. В результате переменная [FileOpen] будет иметь следующий вид:
[FileOpen] = C:\Data\Вася.txt;C:\Data\Миша.txt;C:\Data\Маша.txt;C:\Data\Даша.txt
После обработки этой переменной командой StrParse с указанными аргументами, мы получим такой результат:
[CName1] = C:\Data\Вася.txt
[CName2] = C:\Data\Миша.txt
[CName3] = C:\Data\Маша.txt
[CName4] = C:\Data\Даша.txt
[NOF] = 4

Примечание: если мы выберем только один файл, например "Маша", то на выходе будет:
[CName1] = C:\Data\Маша.txt
[NOF] = 1

Далее...

Code
7.ExtractFilePath "[CName1]" "[ClipFolder]"

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

Code
8.DefineVar "[n]" "Integer" "" "Local" "1"

Объявляем целочисленную переменную и присваиваем ей значение "единица", Эта локльная переменная послужит нам в качестве своеобразного "счетчика", назначение которого станет ясно по-позжее...

Вот теперь добрались до самого интересного - команда While...
Это - цикл с предусловием, т.е круговое (повторяющееся) выполнение какой-либо команды (или их набора) пока соблюдается определенное условие.
В нашем случае:

Code
9.While "[n]" "<=" "[NOF]"

Здесь это "звучит" так: до тех пор, пока переменная [n] будет меньше или равна, т.е. не больше, переменной [NOF] будет циклически выполняться набор ВСЕХ команд:

Code
10. ListBoxAddItem "PathClip" "0" "[CName[n]]"             
11. ListBoxSize "PathClip" "[Size]"             
12. ExtractFileName "[CName[n]]" "[Name[n]]"             
13. ListBoxAddItem "NameClip" "0" "[Size]. [Name[n]]"             
14. Math "[n] +1" "" "[n]"

идущих до строки EndWhile (конец цикла)

Code
15.EndWhile

Добавлено (01 Ноябрь 2008, 01:32)
---------------------------------------------
Небольшое пояснение...
Т.к. выбирать в списке файлы, ориентрируясь на их полные имена (с путем) крайне неудобно, то есть смысл создать список, в котором отображаются лишь непосредственно имена файлов, а их пути (или полные имена) скрыты в другом месте. Эту задачу можно решить разными способами, но наиболее простой и удобный (хоть и возможно менее скорострельный) - создать ДВА синхронизированных между собой списка (ListBox), в одном их которых держать полные имена файлов, а в другом только их "удобочитабельные" имена. Как синхронно работают эти списки можно понять из команд, заложенных в их события, а сейчас разговор только о "заполнении" списков, что и будет сделано в цикле.
В этом примере имеется два списка: PathClip - для полных имен файлов, NameClip - для урезанных (а НЕ ОБРЕЗАННЫХ, т.к. это уже из другой "оперы" biggrin ) имен.
Итак, цикл запущен...

Code
10. ListBoxAddItem "PathClip" "0" "[CName[n]]"

Помещаем в "полный" список PathClip имя файла из переменной [CName[n]]. Поскольку переменная [n] в начале цикла равна единице, то в список будет помещен файл из [CName1], т.е. C:\Data\Вася.txt. Второй параметр команды ListBoxAddItem равен "нулю", что означает "добавить строку в конец списка". И не важно сколько в списке уже имеется строк - всегда будет добавлено в конец списка.

Code
11. ListBoxSize "PathClip" "[Size]"

Здесь просто определяется количество имеющихся пунктов в списке.

Code
12. ExtractFileName "[CName[n]]" "[Name[n]]"

Выделяем из "полного" собственное имя файла (Вася.txt), и

Code
13. ListBoxAddItem "NameClip" "0" "[Size]. [Name[n]]"

помещаем его во второй список, но не просто только имя, а добавляем к нему порядковый номер - [Size]. [Name[n]]. Т.к. переменная [Size] при первой итерации цикла равна 1 (если список ранее был пустой), то в первую строку списка NameClip будет помещено "1. Вася.txt".

Code
14. Math "[n] +1" "" "[n]"

Тут просто увеличиваем значение счетчика на единицу, т.е делаем переменную [n] равной 2.

Цикл, он умный...
Видит, что [n] все ещё НЕ БОЛЬШЕ [NOF], и запускается по новому кругу, но уже при [n] = 2...
И так будет происходить до тех пор пока [n] не станет больше [NOF], т.е. больше 4

Тогда сработает:

Code
15.EndWhile

завершение цикла.
Кстати, для "преждевременного" выхода из цикла существует специальная команда ExitWhile.
Кроме того, в NB есть ещё и другие команды организации циклов, но это уже отдельная тема.

Code
16.SetVar "[TotalClip]" "[Size]"

Показываем в объекте, связанным с [TotalClip] (в данном примере - текстовой надписи) общее количество файлов.

Code
17.DeleteArray "[CName]" "All"             
18.DeleteArray "[Name]" "All"

Ну а здесь просто "уборка" - освобождаем оперативную память компьютера от уже ставших ненужными массивов...

Вот, собственно, и всё по данному скрипту.
Как видим - ничего заумного!


Автор - Peter
Дата добавления - 01 Ноября 2008 в 01:32
mishemДата: Пт, 20 Марта 2009, 10:38 | Сообщение # 11
Эксперт форума
Тема занятная, такие темы нужно в отдельную, типа Уроки и прикрепить. Постепенно я думаю их много наберется. smile Или в часто задаваемые вопросы. Соответственно вырезать все не нужное, но можно и так оставить. smile Со временем хорошая справочка получится smile

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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеТема занятная, такие темы нужно в отдельную, типа Уроки и прикрепить. Постепенно я думаю их много наберется. smile Или в часто задаваемые вопросы. Соответственно вырезать все не нужное, но можно и так оставить. smile Со временем хорошая справочка получится smile

Автор - mishem
Дата добавления - 20 Марта 2009 в 10:38
  • Страница 1 из 1
  • 1
Поиск: