Перейти к содержимому

Totoro

Гуру
  • Публикации

    1 950
  • Зарегистрирован

  • Посещение

  • Победитель дней

    289

Все публикации пользователя Totoro

  1. Вот тут например предлагают вот такую симпатичную функцию юзать для этих целей: function comma_value(n) -- credit http://richard.warburton.it local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$') return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right end Юзается так: print(comma_value(9)) print(comma_value(999)) print(comma_value(1000)) print(comma_value('1333444.10')) print(comma_value('US$1333400')) print(comma_value('-$22333444.56')) print(comma_value('($22333444.56)')) print(comma_value('NEG $22333444.563')) Выведет это: 9 999 1,000 1,333,444.10 US$1,333,400 -$22,333,444.56 ($22,333,444.56) NEG $22,333,444.563 Для записи в файл просто замени print на file:write.
  2. А, понятно. Ну в таком случае тебе просто надо перезаписывать файл. Открывай его с режимом r, обрабатывай данные, закрывай и переоткрывай в режиме w. Файл перезапишется начистую.
  3. В обычном Луа можно было бы использовать режим a+ - "чтение плюс дозапись". Например так: -- открываем файлик в режиме чтения-добавления -- если файлика не существовало в момент открытия - он будет создан -- если он существовал - будет открыт на дозапись local file = io.open("hotto-dogu.txt", "a+") file:write("i like hotto dogu\neat eat eat hotto dogu\n") -- закрываем файлик -- (это правило хорошего тона, как минимум) file:close() Запускаем два раза, и в файле hotto-dogu.txt появляется четыре строки: i like hotto dogu eat eat eat hotto dogu i like hotto dogu eat eat eat hotto dogu Однако в OpenComputers всё чуть сложнее, потому что режимы с плюсиками не работают. OpenComputers поддерживает только режимы r, w и a. То есть нам придётся сначала открыть файл на чтение, прочесть что надо, закрыть, а потом уже открывать на дозапись. Например так: local comboCounter = 0 -- открываем на чтение и вершим свои тёмные дела local file = io.open("hotto-dogu.txt", "r") if file ~= null then for line in file:lines() do comboCounter = comboCounter + 1 end file:close() end -- а теперь открываем на дозапись, и дозаписываем какую-нибуь хренотень file = io.open("hotto-dogu.txt", "a") if comboCounter == 0 then file:write("hotto dogu\n") else file:write("hotto dogu [x" .. comboCounter + 1 .. "]\n") end file:close() Запустим программу раз пять, и вуаля! hotto dogu hotto dogu [x2] hotto dogu [x3] hotto dogu [x4] hotto dogu [x5]
  4. Загадочный Луа. Кстати, по теме. В старых версиях Lua существовала своя альтернатива хеш-оператору: print(table.getn{10,2,4}) Как раз в Lua 5.0 должна работать по идее.
  5. Что за дьявольская магия? =) Написано же - "любое значение nil по сути означает конец массива" но твой пример кода этому противоречит.
  6. У меня вроде и считает до первой "дырки". Максимально аутентичная функция. =) Насчёт определить функцию в виде символа. В Луа это делается через метатаблицы. Но загвоздка в том, что переопределить можно поведение только тех операторов, которые знает язык. А оператор решётки ввели в Lua 5.2+. Так что придётся довольствоваться обычной функцией size.
  7. Можно набросать свою. Если надо именно по индексам считать, как делает стандартная функция: local a = {"a", "b", "c"} function size(t) local index = 0 while true do if t[index+1] then index = index + 1 else return index end end end print(size(a)) А для длины строк можно string.len(str) юзать. (Для русских строк - стырить функцию из модуля unicode =)).
  8. Как раз для таких прог, которые зашиваются в EEPROM мне кажется нет особого смысла сжимать сильнее чем 4 KiB. Если конечно не предполагается встаивать такой код в другую EEPROM прошивку.
  9. VK, к примеру, до сих пор юзает charset=windows-1251. Маньяки, сэр.
  10. Я из-за этой баги пишу все теги на английском. =)
  11. Totoro

    I18N

    Да, в плане использования - это самая гибкая и удобная схема. Минус только один - будет немного хлопотно обновлять по N пакетов каждый раз, когда изменится интерфейс программы в новой версии.
  12. Не надо путать компонент computer и библиотеку Computer API. Компонент computer - это по сути компонент корпуса компьютера. То есть у корпуса есть свои какие-то плюшки, и посколько компьютер работает в корпусе, он имеет к нип доступ. Например - включить, выключить компьютер, или попищать спикером. Это именно то, что ты получаешь в виде прокси. Библиотека Computer API - это системная библиотека, которая доступна всегда и везде. Она предоставляет другой набор функций - для работы с виртуальной машиной Lua. Например - получить объём свободной памяти, адрес временной файловой системы и т.п.
  13. Сделать-то можно как угодно, но зачем? =) Это не заставит его мигать реже в случае операционки RccHD.
  14. Есть у твоей системы какое-то официальное название? А то работа идёт бурными темпами, а тема всё ещё называется "пишу новую OS". =)
  15. А это имеет смысл с точки зрения кода? Если это позволит сделать какую-то полезную оптимизацию - конечно вводи. Столько окон никому нафиг надо будет. Если чисто для косметики, то наверное не стоит. Оставим простор для деятельности всяким психам.
  16. Там иконка курсора не меняется сама. Просто в том месте, где ты тянешь мышью отрисовывается двусторонняя стрелочка.
  17. Надо их светопылью дозаряжать, чтобы светили на максимальной яркости.
  18. Ну это для администрации же не проблема. Берём просто, и накладываем пару новых налогов на всех игроков сервера. Тут то хамелиум и потечёт рекой. А кто будет роптать - отключим газ.
  19. Это у них фича такая у дедлайнов. Приходить слишком быстро. =)
  20. Totoro

    I18N

    Т.е. предлагаешь разместить lang-файлы в отдельных пакетах, и скачивать их программой, после того, как пользователь выберет язык?
  21. Totoro

    I18N

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

    I18N

    Мне тоже идея внешних файликов с локализациями нравится больше. В принципе можно заливать в репозиторий программу с набором локализаций, а при старте программы потом просить выбрать язык. Вроде так довольно многие делают. Например, пишем программу в /usr/bin/holo.lua, а файлы локализации в /etc/holo/lang/ru_RU.lang и т.п. А потом в /etc/holo/app.conf записываем какой язык выбрал пользователь при первом старте. Минус тут только один - загружаются лишние языковые файлы, которые будут занимать место на диске, и которыми пользователь не будет пользоваться. Хотя, можно из программы подчищать лишнее потом.
  23. Totoro

    I18N

    Это уже немного детали UI программы. Но вопрос-то остаётся тем же самым. Как хранить переводы? Жёстко забитыми в коде? А как распространять программу на разных языках?
×
×
  • Создать...