msave/mload/mdelete

Здесь обсуждается всё, что касается макросов.
User avatar
SUSim
Posts: 1531
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: msave есть а mload?

Post by SUSim » Thu 19 Aug, 2010 17:10

Latest post of the previous page:

Правильно все пока, потом второй параметр можно будет добавить, функция на развитие не ограничена... И правильно, что mload() вызывает ошибку! Если это(mload без параметров) начнет работать, то ни о каком расширении функционала речи не пойдет :( тогда толь опять "АХТУНГ" останется...
SimSU ··· ·· -- ··· ··-

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: msave есть а mload?

Post by Skirda » Thu 19 Aug, 2010 18:51

ну... если готовы к перелопачиванию макросов, то давай переименую в vsave и vload
We are the Borg. You will be assimilated.
So Say We All!

User avatar
HaRT
Moderator
Posts: 9091
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 161 times

Re: msave есть а mload?

Post by HaRT » Thu 19 Aug, 2010 19:04

Skirda wrote:ну... если готовы к перелопачиванию макросов, то давай переименую в vsave и vload
может лучше gsave/gload (от слова globals)?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: msave есть а mload?

Post by Skirda » Thu 19 Aug, 2010 19:11

да как скажете - g, так g :-)
если все готовы, то пойду переименовывать
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: msave есть а mload?

Post by Skirda » Thu 19 Aug, 2010 19:13

кстати, функции [mvg]load можно добавить второй необязательный параметр - в какую переменную считать значение с именем из первого параметра. типа, если второй не указан, то считываться будет в одноименную переменную, если указан, то...
We are the Borg. You will be assimilated.
So Say We All!

User avatar
SUSim
Posts: 1531
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: msave есть а mload?

Post by SUSim » Fri 20 Aug, 2010 19:12

А если в msave добавить второй... третий параметр :) типа: без второго параметра или 0 - записать в реестр, -1 - сохранить в переменную из реестра, 2 сохранить в реестр с именем ключа третьего параметра, -2 - сохранить в переменную из реестра с именем ключа третьего параметра и тюпю (т.п.) :) во многих функциях фара такое есть...

Это имхо бред... лучше в mload сделать второй необязательный параметр - имя ключа реестра откуда грузить!
SimSU ··· ·· -- ··· ··-

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

Re: msave есть а mload?

Post by John Doe » Fri 20 Aug, 2010 20:09

HaRT wrote:
Skirda wrote:ну... если готовы к перелопачиванию макросов, то давай переименую в vsave и vload
может лучше gsave/gload (от слова globals)?
Не надо gload. Globals понять ещё можно, а g уже нет.
Skirda wrote:кстати, функции [mvg]load можно добавить второй необязательный параметр - в какую переменную считать значение с именем из первого параметра. типа, если второй не указан, то считываться будет в одноименную переменную, если указан, то...
Логично.

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

Re: msave есть а mload?

Post by John Doe » Fri 20 Aug, 2010 20:10

SUSim wrote:лучше в mload сделать второй необязательный параметр - имя ключа реестра откуда грузить!
Неконцептуально.

User avatar
SUSim
Posts: 1531
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: msave есть а mload?

Post by SUSim » Sat 21 Aug, 2010 07:33

Я так и не понял mload сделали или нет?
макрос:

Code: Select all

%%test=10; msave("%%test") %%test=100; msgbox(mload("%%test"),%%test)
mload возвращает 1 - типа все в порядке, однако в переменной %%test 100, а ожидалось 10
SimSU ··· ·· -- ··· ··-

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: msave есть а mload?

Post by Skirda » Sat 21 Aug, 2010 08:01

не пашет
щаз починю
We are the Borg. You will be assimilated.
So Say We All!

User avatar
SUSim
Posts: 1531
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: msave есть а mload?

Post by SUSim » Sun 22 Aug, 2010 20:11

СПАСИБО! все работает как хотелось!
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: LuaFAR: ломка API

Post by Shmuel » Tue 02 Apr, 2013 16:51

К теме не имеет отношения, но не хотелось начинать новую, короче, к сведению:

Code: Select all

shmuel 02.04.2013 18:02:11 +0300 - build 126

1. mf.msave сохраняет таблицы произвольной степени вложенности.
   Рекурсивные вложения не сохраняются (пропускаются).
   /С использованием кода от SUSim/.

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

Re: LuaMacro — Lua как язык макросов

Post by John Doe » Tue 02 Apr, 2013 17:00

Не понял куда конкретно сохраняются данные.
Что является базой данных?

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: LuaMacro — Lua как язык макросов

Post by Shmuel » Tue 02 Apr, 2013 17:06

John Doe wrote:Не понял куда конкретно сохраняются данные.
Что является базой данных?
Место сохранения не изменилось, это по-прежнему база плагина LuaMacro.
Вот добавленный кусок из macrotest.lua, для ясности:
  1. mf.msave("macrotest", "testkey", { a=5, {b=6}, c={d=7} })
  2. local t=mf.mload("macrotest", "testkey")
  3. assert(t.a==5 and t[1].b==6 and t.c.d==7)
  4. mf.mdelete("macrotest", "*")
  5. assert(mf.mload("macrotest", "testkey")==nil)

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

Re: msave/mload/mdelete

Post by John Doe » Sat 20 Apr, 2013 13:54

Сейчас в распоряжении скрипта есть как семейство функций mf(msave/mload/mdelete), так и семейство FAR API (SettingsControl).

Хочется разобраться со спецификой, в каких случаях что использовать для хранения настроек (и вообще любых данных, требующих между сессиями фар).
  • msave/mload/mdelete однозначно проще в использовании, и позволяют хранить таблицы
    Но как у них с производительностью?
  • Функции SettingsControl зато позволяют хранить данные в отдельной базе (а не в базе плагина).
    Вопрос это не актуален для персональных скриптов, но ведь скрипты выкладываются и в публичное пользование, подобно плагинам.
На первый взгляд стоит отдать предпочтение использованию msave/mload/mdelete.
Но что посоветует автор этой функциональности?

Shmuel
Posts: 5897
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 218 times

Re: msave/mload/mdelete

Post by Shmuel » Sat 20 Apr, 2013 16:36

John Doe wrote:
  • msave/mload/mdelete однозначно проще в использовании, и позволяют хранить таблицы
    Но как у них с производительностью?
  • Функции SettingsControl зато позволяют хранить данные в отдельной базе (а не в базе плагина).
На первый взгляд стоит отдать предпочтение использованию msave/mload/mdelete.
Но что посоветует автор этой функциональности?
1. С производительностью у msave/mload/mdelete всё в порядке.

2. "Функции SettingsControl зато позволяют хранить данные в отдельной базе" - это неверно.
Фар ищет по гуиду только среди баз плагинов. Да, можно хранить в базе чужого плагина, или создать отдельный плагин специально для этого (не пробовал ни того, ни другого).

3. msave/mload/mdelete - это просто оболочки над SettingsControl, реализованные на Lua, что можно видеть в файле api.lua. Нравятся эти оболочки - пользуйтесь, не нравятся - сделайте лучше.

User avatar
John Doe
Бюрократ
Posts: 12458
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 192 times

Re: msave/mload/mdelete

Post by John Doe » Sat 20 Apr, 2013 18:03

Shmuel wrote:Нравятся эти оболочки - пользуйтесь, не нравятся - сделайте лучше.
Не будем пока что изобретать колесо )

Сейчас хотелось бы обсудить организацию хранения msave/mload, учитывая тот факт, что в одной базе могут храниться данные разных скриптов, составленных разными авторами.
msave/mload предполагают одноуровневую организацию, и на её основе необходимо построить более детальную иерархию.
Тут есть варианты, которые и хотелось бы обсудить (чтобы заново не решать давно решённые проблемы).

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

(1) Можно сделать так:
JD/RecentScreens
Здесь "JD" - таблица для всех моих скриптов
"RecentScreens" параметр lua-таблица, вмещающая все опции скрипа RecentScreens

(2) Можно сделать иначе:
JD.RecentScreens/Param1
JD.RecentScreens/Param2

(3) Или так:
JD/RecentScreens.Param1
JD/RecentScreens.Param2

Или как-то иначе?

Post Reply

Return to “Обсуждение макросов”