[Logo]
LUA Форум
  [Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Ликбез  XML
Индекс форума » LUA: Общие вопросы
Автор Сообщение
GrayFace
Новичок

Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн

mraleph wrote:Сохранить состояния Lua это типа persistency?

В смысле в файл.

mraleph wrote:// хм, а вы ведь на форуме АкадемГородка кажется есть, я вас вспомнил

да А какой у вас (на ты?) ник?

P.S. вообще, я это в Heroes 3 WoG решил встроить Lua.
[Email] [ICQ]
mraleph
Постоянный посетитель
[Avatar]

Зарегистрирован: 20/05/2008 19:13:01
Сообщений: 42
От: Новосибирск
Оффлайн

GrayFace wrote:В смысле в файл.


Ну хочется сохранить состояние, а потом загрузить и продолжить исполнение? ВОобщем смотрите в сторону Pluto.

GrayFace wrote:А какой у вас (на ты?) ник?


ok, на ты. AmbassadorKosh

This mystery is already on the tip of my tongue
[Email]
GrayFace
Новичок

Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн

А как собрать pluto? Пробовал вызывать "nmake Makefile", "nmake all Makefile" и "make -f Makefile" из VS Command Prompt - не собралось.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/06/2008 01:50:02

[Email] [ICQ]
z00n
Постоянный посетитель

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн

В корневой директории исходников Pluto (там где README) создайте директорию "LUADIR" и положите туда все 4 заголовочных файла луа и lua51.lib(или lua5.1.lib - что вам ближе)

Дальше, из командного окна VS, находясь в корневой директории Pluto, наберите:


Так наверное проще всего

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/06/2008 14:05:07

GrayFace
Новичок

Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн

Спасибо, собралось.

А как вызвать функцию, передав ей таблицу не как 1 из параметров, а как список параметров? (т.е. мне нужно предварительно подготовить список параметров для функции - я для этого кладу их в таблицу)
[Email] [ICQ]
z00n
Постоянный посетитель

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн

GrayFace wrote:Спасибо, собралось.

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


unpack

GrayFace
Новичок

Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн

Спасибо.

А что в Lua невозможно взять i-тый символ строки? Код a[1] >= "A" and a[1] <= "Z" не работает. Наверное, лучше всего в таком случае использовать string.byte?

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/06/2008 23:41:23

[Email] [ICQ]
z00n
Постоянный посетитель

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн

GrayFace wrote:Спасибо.

А что в Lua невозможно взять i-тый символ строки? Код a[1] >= "A" and a[1] <= "Z" не работает. Наверное, лучше всего в таком случае использовать string.byte?


В принципе да, можно писать a:byte(1) >= ("A"):byte(1) или


но лучше пользоваться паттернами (http://www.lua.org/pil/20.2.html)
например
GrayFace
Новичок

Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн

Это будет быстрее?
[Email] [ICQ]
z00n
Постоянный посетитель

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн

GrayFace wrote:Это будет быстрее?


Скорость будет примерно одинаковая - несколько миллионов тестов в секунду. Читаются паттерны намного лучше.
Berkut
Новичок
[Avatar]

Зарегистрирован: 19/04/2008 10:28:01
Сообщений: 21
Оффлайн

Не пойму, в чём суть проблемы. Есть вот такой кусок кода с обработкой команды:


При сработке команды должен удаляться файл с сообщениями из определённой папки, имеющий название, совпадающее с ником того, кто активизировал команду.
Проблема в том, что если файл с сообщениями был создан в ту же сессию, что и активирована команда его удаления, я получаю сообщение об очистке (т.е. формально os.execute("del "..OffLineDir..user.sName..".msg") выполняется), но файл в папке остаётся. Как я понимаю, он удаляется и создаётся заново. Если же между сохранением файла и активацией команды была перезагрузка хоста, то файл удаляется прекрасно.

Вот функция сохранения в файл:

Здесь user - таблица с данными пользователя, сохраняющего сообщение, aim - адресат, msg - сообщение.

Каким образом мне можно очистить почту, не перезапуская хост?
z00n
Постоянный посетитель

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн

Berkut wrote:Не пойму, в чём суть проблемы. Есть вот такой кусок кода с обработкой команды:


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


Это сообщение было редактировано 1 раз. Последнее обновление произошло в 30/06/2008 16:32:37

Berkut
Новичок
[Avatar]

Зарегистрирован: 19/04/2008 10:28:01
Сообщений: 21
Оффлайн

z00n wrote:
Мне кажется проблема в том, что вы не закрываете файл перед тем как пытаетесь его удалить.
Попробуйте так:



Сработало. Только для начала файл открыть нужно было
z00n
Постоянный посетитель

Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн

Berkut wrote:
z00n wrote:
Сработало. Только для начала файл открыть нужно было


Дело в том, что файл уже открыт, раз вы не можете его удалить. Найдите где в вашей программе вы открываете файл и не закрываете его. Если вам нужно держать файлы открытыми - заведите глобальную lookup-table :: {filename->filehandle} c weak value. Это позволит закрывать файл по имени перед удалением.
GrayFace
Новичок

Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн

А что такое weak value?
[Email] [ICQ]
 
Индекс форума » LUA: Общие вопросы
Перейти:   
Powered by JForum 2.1.8 © JForum Team