Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Чтение и выполнение скрипта из файла
Sam726Дата: Среда, 14 Октября 2009, 23:04 | Сообщение # 1
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Всем привет. Помогите пожалуйста с кодом. Короче я хочу сделать так что бы можно было менять цвет объекта, я использую этот код SetObjectParam("Rectangle","BGCOLOR=255,0,0"). Он работает, но мне надо что бы я мог изменять код цвета внешним файлом. К примеру записав его в *.txt и при запуске программы цвет объекта будет таким, как я его напишу в *.txt файле. Я уже мго чего перепробывал, но никак не получается. :'( ПОМОГИТЕ ПОЖАЛУЙСТА. Очень надо, спасибо. :(
 
DEMBELДата: Среда, 14 Октября 2009, 23:20 | Сообщение # 2
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Mad-Dog)
К примеру записав его в *.txt и при запуске программы цвет объекта будет таким, как я его напишу в *.txt файле.

Ну чего проще-то... Читай текст из файла командой StrFromFile, присваивай его в переменную и вставляй ее в команду SetObjectParam.

Code
file$='c:\color.txt'
bgcolor$='BGCOLOR='+StrFromFile(file$,1,1)
SetObjectParam("Rectangle","bgcolor$")

В файл c:\color.txt пишешь строчку цвета, например
160,35,70
Весь фокус в том, чтобы вручную сформировать в переменной bgcolor$ параметр BGCOLOR, и подставлять в SetObjectParam уже саму переменную. Подобный фокус часто везде приходится применять, так что советую разобраться.




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62


Сообщение отредактировал DEMBEL - Среда, 14 Октября 2009, 23:21
 
Sam726Дата: Четверг, 15 Октября 2009, 00:02 | Сообщение # 3
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
DEMBEL, СПАСИБО!!!
Только я чет опять запутался. А оно че построчно не будет пахать?
LoadText("new$","<List>1")
file$='new$'
bgcolor$='BGCOLOR='+StrFromFile(file$,1,1)
SetObjectParam("Rectangle0","bgcolor$")
 
YURIYДата: Четверг, 15 Октября 2009, 00:19 | Сообщение # 4
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Mad-Dog, ладно, прощаю. Прочти правила и не нарушай их!

Ответ на твой вопрос.

Допустим, файл находится здесь: C:\mmb.txt и содержит строку:

Code
SetObjectParam("Rectangle","BGCOLOR=255,0,0")

Тогда выполнить его нужно так:

Code
LoadText("code$","C:\mmb.txt")
RunScriptCode("code$","1")

Причём, правила ты нарушил 2 раза. Такая тема уже была!

http://mmbuilder.ru/forum/14-1465-1

Учимся пользоваться поиском.



Вечная память Андрею Сергееву!
 
Sam726Дата: Четверг, 15 Октября 2009, 01:06 | Сообщение # 5
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
YURIY, у меня этот код не читает
RunScriptCode("code$","1")


 
YURIYДата: Четверг, 15 Октября 2009, 01:07 | Сообщение # 6
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Mad-Dog, это работает только в последней версии MMB. У тебя 4.9.8.13?


Вечная память Андрею Сергееву!
 
DEMBELДата: Четверг, 15 Октября 2009, 01:09 | Сообщение # 7
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Mad-Dog)
YURIY, у меня этот код не читает

Quote (YURIY)
У тебя 4.9.8.13?

Ну по всей видимости нет. Искать тут.




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62


Сообщение отредактировал DEMBEL - Четверг, 15 Октября 2009, 01:10
 
Sam726Дата: Пятница, 16 Октября 2009, 19:53 | Сообщение # 8
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Блин! Что с сайтом случилось? Двое суток зайти сюда не мог. Это только у меня или нет?
Кстати! Я вспомнил как надо было написать нужный мне код. Все на много проще.
Code
SongListLoad("D:\Color.txt","")
LoadText("a$","<List>1")
SetObjectParam("Rectangle","a$")

А в файле "Color.txt" пишем "BGCOLOR=230,230,250"
Вот такта :D
 
YURIYДата: Пятница, 16 Октября 2009, 19:54 | Сообщение # 9
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Mad-Dog)
Блин! Что с сайтом случилось? Двое суток зайти сюда не мог. Это только у меня или нет?

У тебя.

Quote (Mad-Dog)
Все на много проще.

Три строки кода - это проще, чем одна строка? scared



Вечная память Андрею Сергееву!
 
Sam726Дата: Воскресенье, 02 Мая 2010, 17:32 | Сообщение # 10
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Скажите, а можно загрузить скрипт в ListBox?



Сообщение отредактировал Sam726 - Воскресенье, 02 Мая 2010, 17:30
 
DEMBELДата: Воскресенье, 02 Мая 2010, 17:38 | Сообщение # 11
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Sam726)
Скажите, а можно загрузить скрипт в ListBox???

а зачем? Загрузить текст "скрипта" в листбокс построчно можно, а дальше? Это же не будет скриптом, а просто текстовыми строчками в пунктах списка. Вытаскивать потом те строки которые нужны и компоновать их в скрипт? тогда еще есть какой-то смысл...




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
YURIYДата: Воскресенье, 02 Мая 2010, 18:05 | Сообщение # 12
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
DEMBEL, да нет, он хочет динамически менять скрипт, который будет выполняться при выборе пункта в списке.

Какой вопрос, такой и ответ - можно :)



Вечная память Андрею Сергееву!
 
DEMBELДата: Воскресенье, 02 Мая 2010, 18:09 | Сообщение # 13
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (YURIY)
он хочет динамически менять скрипт, который будет выполняться при выборе пункта в списке.

аа... а зачем тогда именно спрошено было "грузить скрипт в листбокс" когда надо присваивать пункту списка выполнение заданного скрипта при его выборе... я понял буквально :)




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Sam726Дата: Воскресенье, 02 Мая 2010, 20:52 | Сообщение # 14
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Не ну, тема о загрузке скрипта. И то что в список можно скрипт загрузить (и не только) это ясно. А вот имеено как сказал YURIY, динамически менять скрипт.
Вот это будет будет внутри и его нужно менять. Возможно или нет???
Code
ListBoxGetSelectedItems("List","SelItems$,SelItemsNum$,#,SelNumItems")
If (VAL(SelItemsNum$)=1) Then
    MessageEx("1","1")
End
If (VAL(SelItemsNum$)=2) Then
    MessageEx("1","2")
End




Сообщение отредактировал Sam726 - Воскресенье, 02 Мая 2010, 23:34
 
YURIYДата: Воскресенье, 02 Мая 2010, 21:31 | Сообщение # 15
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Итак.

Допустим, есть файл C:\1.txt, в котором содержится сценарий и он должен будет выполняться при выборе пункта в списке:

Code
For i=1 To 5
   Message("Привет!","")
Next i

В скрипте старта страницы создаём динамически объект Script:

Code
CreateScript("Script","script$")

В скрипте для двойного клика по пунктам списка пишем следующее:

Code
RunScript("script$")

То есть, будет выполняться код, который мы погрузим из файла в только что созданный объект.

Ну и создадим кнопку, к примеру, которая из файла подгрузит сценарий:

Code
path$='C:\1.txt'
s$='SCRIPT:1='+StrFromFile(path$,1,-1)
SetObjectParam("script$","s$")

С помощью SetObjectParam меняем код скрипта созданного объекта Script на тот, что получили из файла + впереди должен быть код "SCRIPT:1=".

Ну вот и всё. Когда нужен будет другой скрипт из другого файла - меняем имя в path$, всё остальное не трогаем.

После запуска проекта для данного примера делаем двойной клик по списку и выводятся 5 сообщений с надписью "Привет!" :)

Демо прилагаю.

Прикрепления: 5143487.rar (0.5 Kb)



Вечная память Андрею Сергееву!
 
Sam726Дата: Понедельник, 03 Мая 2010, 00:13 | Сообщение # 16
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Блин! Или я что-то не так понял или оно нето. Мне бы необходимо менять скрип тот, в который мы грузим как выше указано RunScript("script$") "Двойной щелчек". Что-то мне кажется что наверное такое невозможно... По крайней мери в справке о загрузке скриптов о ListBox невспоминалось.



Сообщение отредактировал Sam726 - Понедельник, 03 Мая 2010, 00:14
 
YURIYДата: Понедельник, 03 Мая 2010, 00:23 | Сообщение # 17
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Начинается...

Давай тогда, описывай подробно всё.



Вечная память Андрею Сергееву!
 
Sam726Дата: Понедельник, 03 Мая 2010, 00:56 | Сообщение # 18
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Заходим в свойства ListBox. И видем перед собой окно:

Теперь жмем на "Actions" (скрипт). И видем другое окно:

Вот в это окно и нужно загружать разные скрипты с файла.
Пример:
Code
ListBoxGetSelectedItems("List","SelItems$,SelItemsNum$,#,SelNumItems")
If (VAL(SelItemsNum$)=1) Then
   MessageEx("Message 1","Hello!")
End
Прикрепления: 6432291.png (11.9 Kb) · 6429567.png (14.1 Kb)




Сообщение отредактировал Sam726 - Понедельник, 03 Мая 2010, 01:07
 
YURIYДата: Понедельник, 03 Мая 2010, 01:16 | Сообщение # 19
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Sam726)
Вот в это окно и нужно загружать разные скрипты с файла.

Во время выполнения программы?

Quote (Sam726)
Пример:

Пример чего это? Не соображу никак, как это сопоставить с твоей задачей!



Вечная память Андрею Сергееву!
 
Sam726Дата: Понедельник, 03 Мая 2010, 01:49 | Сообщение # 20
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Допустим при запуске страници добавляется строка в список при помоши команды:
Code
ListBoxAddItem("ListBox","Select 1")

Нажав на кнопку грузится скрипт:
Code
ListBoxGetSelectedItems("List","SelItems$,SelItemsNum$,#,SelNumItems")  
If (VAL(SelItemsNum$)=1) Then  
    MessageEx("Message 1","Hello!")  
End

Получается что при нажатии на первый пункт мы увидем сообщение "Hello!"
Загрузив допустип другой скрипт нажав на другую кнопку:
Code
ListBoxGetSelectedItems("List","SelItems$,SelItemsNum$,#,SelNumItems")  
If (VAL(SelItemsNum$)=1) Then  
    LoadText("Text",Hello!")  
End

При нажатии на первый пункт в объект "Text" будет загружен текст "Hello!".
Улавливаеш суть??? Смена скрипта внутри списка.


 
YURIYДата: Понедельник, 03 Мая 2010, 01:57 | Сообщение # 21
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Sam726)
Улавливаеш суть???

Я её уловил ещё чёрт знает когда!

Ну что ж, переходим к следующему этапу.

Попробуй доказать, что мой пример работает не так, как ты написал только что.

Пора бы уже разбираться хотя бы в готовом, что тебе дают, а не компостировать людям мозги!

Добавлено (03 Май 2010, 01:57)
---------------------------------------------
Создай пять, тридцать, сто кнопок - сколько хочешь, а в каждой пиши

Code
path$='ПУТЬ К ФАЙЛУ СКРИПТА'  
s$='SCRIPT:1='+StrFromFile(path$,1,-1)  
SetObjectParam("script$","s$")

И скрипт будет сменяться при нажатии на такую кнопку! Как же мне ещё объяснить, сил уже нет :'(



Вечная память Андрею Сергееву!
 
Sam726Дата: Понедельник, 03 Мая 2010, 02:06 | Сообщение # 22
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline




Сообщение отредактировал Sam726 - Понедельник, 03 Мая 2010, 02:10
 
  • Страница 1 из 1
  • 1
Поиск: