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

Система отзывов для магазина. Нужна помощь!

Рекомендуемые сообщения

Вот код, его написал boob:

 

 

  1. local forms = require('forms')
  2. local w, h = require('component').gpu.getResolution()
  3.  
  4. local main=forms.addForm()
  5. main.border=1
  6. main.H=15
  7. main.W=43
  8. main.left=math.floor((w-main.W)/2)
  9. main.top=math.floor((h-main.H)/2)
  10.  
  11. textfield=main:addEdit(3,2)
  12. textfield.text = {}
  13. textfield.H=11
  14. textfield.W=39
  15.  
  16. local btn_sumbit=main:addButton(29,13,'Sumbit',function()
  17. local file = io.open('file.txt', 'a')
  18. file:write(table.concat(textfield.text,'\n')..'\n')
  19. file:close()
  20. textfield.text = {}
  21. textfield:redraw()
  22. end)
  23. local btn_exit=main:addButton(6,13,'Exit',forms.stop)
  24.  
  25. forms.run(main)

 

 

 

file.txt - сюда должны сохраняться отзывы, они уже сохраняються, или нужно что то добавишь и тогда начнут?

Где лежит этот файл и как его открыть что бы посмотреть?

 

И еще

 

"прописать в автозапуск, убрать кнопку выхода и запретить прерывания. И в бой."

 

хелп с этим, это нужно прописывать в edit cmnt.lua, я уже открывал. Выходит что когда открываеться гуи, в поле можно что то писать, НО если нажать в другое место - окно зависает, ты можешь писать в другом месте, но окно будет продолжать весеть, то же самое если нажать выход или отправить. Хелп!
 
 
 
 
Или же вариант Asior'a
 
 
  1. function zpOtz(name)
  2. print("Тут вы можете оставить свой отзыв\nДля сохранения отзыва нажмите Enter")
  3. local text = io.read()
  4. if text ~= "" then
  5. local file = io.open("../Otz.txt", "a")
  6. print("Идет сохранение вашего отзыва")
  7. print(io.write(name.." > "..text.."\n"))
  8. io.close(file)
  9. end
  10. end
 
 
Только при его запуске выскакивает https://imgur.com/a/l4FQC Running... и всё. Дальше - ничего не происходит.
 
Памагите, а скора буду плакать - эта не шутки!!!
Изменено пользователем Miroshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Памагите, а скора буду плакать - эта не шутки!!!

просто запустить "код Асиора" - этого мало. Это не программа, а функция. Ее, как минимум, еще и вызвать нужно.

В общем, жди, может кто-то и напишет тебе готовую прогу полноценную с инсталляцией автоматической всех либ и пр., это проще в 100 раз, чем объяснить, как это сделать человеку, который новичок в этом. И с обработчиком отзывов, типа показать отзывы за период, или показать последние десять отзывов, заблокировать ник (спамер), очистить отзывы, и тд. и т.п. и прочее. Сейчас пока ты ничего в этом топике не выяснишь и не добьешься. Лучше пока почитай документацию по луа и ОС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

В общем, жди, может кто-то и напишет тебе готовую прогу полноценную с инсталляцией автоматической всех либ и пр., это проще в 100 раз, чем объяснить, как это сделать человеку, который новичок в этом.

 

Честно - на это я и расчитывал. Ибо писать программы такого уровня я сам еще не могу, ибо только начинаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эмм. Сколько ж тут всего то ...
Короче, я написал обыкновенную функцию, которая при обычном копировании просто не сработает, так как её не вызывают. Вызвать функцию и заставить её работать можно по её имени в моем случае просто надо после кода функции вставить её название и все.

function zpOtz(name)
...
end

zpOtz('Asior')

Вот и все. Тогда программа выполнится. Я как то упустил этот момент решив что это то должен знать любой кто хоть немного изучал программирование и не обязательно на lua.
P.S. Всетаки разработать программу для торговли прям по ходу дела уча lua это довольно мм ... тяжело, не находите? Может потренироваться сначала на чем-то попроще? Всетаки торговля это такое дело ... пара непредвиденных исключений и ты банкрот, и ресурсов нету и репутация копает могилу. Ну буду надеяться что ваш интузиазм не потухнет и вскоре можно будет на новом сервере увидеть вашу программу в полном действии.

Изменено пользователем Totoro

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@Asior

Не выходит. 

Сначала сделал так:

https://pastebin.com/vJeHGccb

потом сделал так, ибо была ошибка из-за ...

https://pastebin.com/BQaY8YKR

 

в итоге оба раза: https://imgur.com/a/M2boI

 

Скорей всего я не так вставил сам код, ибо он опять же - не запустился, а именно функция.

Изменено пользователем Miroshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@Asior А знаешь что... Добавь кнопку, и что бы по нажатию этой кнопки выскакивала эта функция! Вот! И это уже будет конечная остановка, те моя проблема будет - решена. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

О_о ппц. Вас не смущает что у вас теперь 2 функции с одним и тем же названием? Уберите нафиг и не позорьтесь в последнем варианте 11 и 12 строчки. Кстати не надо мне цитировать все это в личку, я всеравно в почтовый ящик из телефона не могу войти. Насчет кнопки - вариант работы уже показал Doob, я к сожалению сейчас ну никак не могу создать нечто похожее, но иначе, да еще и без ошибок (доступа к компьютеру ближайшие 8 месяцев не предвидится). Хотя нужен же хоть какой-то вариант реализации так? Ну тогда держите немного кода.

pastebin.com/CFvegLMy

И да, логику хоть немного включайте. Я то не могу ни копировать, ни вставлять, ни цитировать.

Изменено пользователем Totoro

Поделиться сообщением


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

function zpOtz(name)

...

end

 

zpOtz('Asior')

 

 

хах, как ты написал, так он и сделал добросовестно.  https://i.imgur.com/krANVxT.png

 

Почему-то вспомнилась легенда про императора Николая 1-го, что мол, он как линейку приложил, и когда чертил, палец случайно обвел на линейке, так ж/дорогу и построили с изгибом :D

сейчас я уже почти уверен, что та легенда - правда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 5-м посте, скрипт - баг https://imgur.com/a/SGzPO. Нажимаешь Exit - не можешь писать в том окне,  а начинает вне него, и оно не изчезает. Нажимаешь отправить - то же самое.

 Никакого бага. Просто для того, что бы начать писать нужно кликнуть по окошку ввода.

А Exit - вообще выход из программы. Что ты там писать собрался?

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Фига тут драма разыгралась, программка-то простая совсем. Держи мой вариант: для начала запускаешь инсталлер всех библиотек:

pastebin run ryhyXUKZ
Затем запускаешь следующий код:

local buffer = require("doubleBuffering")
local GUI = require("GUI")
local event = require("event")

--------------------------------------------------------------

local mainContainer = GUI.fullScreenContainer()

mainContainer:addChild(GUI.panel(1, 1, mainContainer.width, mainContainer.height, 0x002440))
local layout = mainContainer:addChild(GUI.layout(1, 1, mainContainer.width, mainContainer.height, 1, 1))
local label = layout:addChild(GUI.label(1, 1, 40, 1, 0xE1E1E1, ""):setAlignment(GUI.alignment.horizontal.center, GUI.alignment.vertical.top))
local input = layout:addChild(GUI.input(1, 1, 40, 5, 0xE1E1E1, 0x444444, 0x888888, 0xE1E1E1, 0x262626, nil, "Напишите ваш отзыв здесь"))

layout:addChild(GUI.button(1, 1, 40, 3, 0x336DBF, 0xE1E1E1, 0xE1E1E1, 0x336DBF, "Отправить отзыв")).onTouch = function(mainContainer, object, eventData)
  if input.text:len() > 0 then
    local file = io.open("/Otzivi.txt", "a")
    file:write("Отзыв от пользователя " .. eventData[6] .. ": " .. input.text .. "\n")
    file:close()

    input.text, label.text = "", "Ваш отзыв отправлен"
    mainContainer:draw()
    buffer.draw()

    event.timer(2, function()
      label.text = ""
      mainContainer:draw()
      buffer.draw()
    end, 1)
  end
end

layout:addChild(GUI.button(1, 1, 40, 3, 0x336DBF, 0xE1E1E1, 0xE1E1E1, 0x336DBF, "Выйти")).onTouch = function()
  mainContainer:stopEventHandling()
  buffer.clear(0x0)
  buffer.draw(true)
end

--------------------------------------------------------------

mainContainer:draw()
buffer.draw(true)
mainContainer:startEventHandling()
Вуаля, результат:

 

9Y4xX4d.png?1

 

Все отзывы хранятся в файлике с соответствующим именем в корне диска. Читай любым удобным способом:

 

PVChBmz.png?1

Изменено пользователем ECS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@Asior

Всё практически хорошо, но пару но:

1. Когда отправляешь отзыв и открываешь файл, в котором должен сохраниться отзыв Otz.txt - там ничего нет.

 

2. И можно как-нибудь подогнать этот код под сервер? В плане.. Любой человек сможет закрыть программу на ctrl+alt+c, и открыть файл с отзывами, но это еще ладно, можно не публиковать название файла и никто не узнает, программу то - закрывают.

 

https://imgur.com/a/jsCaO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@@ECS Сразу не заметил пост.

 

Установил библиотеку, и выскакивает ошибка - https://imgur.com/a/WfIFm

 

И вопрос про закрытие программы на ctrl alt c - еще в силе. Вообще без понятия как это убрать.. Клаву сломать, что бы не смогли ввести сочетание - не смогут отзыв написать..  :smile25:

Изменено пользователем Miroshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Установил библиотеку, и выскакивает ошибка - https://imgur.com/a/WfIFm

Это твоя ошибка, ко мне отношения она не имеет. Проверил на чистом компе, все без проблем устанавливается:

 

yoVypiN.png?1

 

И вопрос про закрытие программы на ctrl alt c - еще в силе.

 

Юзай следующий код - и все будет в шоколаде:

event.shouldInterrupt = function() return false end
event.shouldSoftInterrupt = event.shouldInterrupt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Памагите Помогите идиоту подключить библиотеку ивентов, и покажите куда вставить этот код:

  1. event.shouldInterrupt = function() return false end
  2. event.shouldSoftInterrupt = event.shouldInterrupt

 

 

И программа - так и не работает. Ошибка в скрине выше.

Изменено пользователем Miroshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ошибка при запуске программы. 

 

Начнем с того, что на твоем скриншоте возникла ошибка с запуском скрипта после загрузки с pastebin.com, и ни в коем случае не при запуске самой программы после окончания работы инсталлера:

 

GrZGnRz.png

 

Во-вторых, скрипт 7PjKsdNa скидывал тебе не я, и с какой стати ты сообщаешь мне об ошибке в чужом софте - не ясно. Вообще, если быть предельно корректным, то это не ошибка, а банальная приватность пасты:

 

kcQISXu.png

 

Если совсем туго с самостоятельным анализом ситуации, то могу вообще прям по действиям расписать:

  • Ввводишь в консоль команду pastebin run ryhyXUKZ
  • Открываешь новый файл (скажем, через edit <имя_файла>) и средней кнопкой мыши вставляешь скинутый выше код с содержимым окна
  • Если требуется отключение ctrl+c, то после строчек с requir'ами вставляешь все той же средней кнопкой мыши скинутый код для отключения ctrl+c
  • Сохраняешь файл путем нажатия ctrl+s, выходишь из редактора через ctrl+w
  • Запускаешь сохраненную программу

Неужели это так сложно? Могу в таком случае скинуть полностью собранную софтину с отключением прерываний (тык), но тогда ты ничему не научишься и будешь бездумно доставать форумчан и далее.

Изменено пользователем ECS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хмм, я тут покопался в своем коде и реально он не сохранял! Тут уже опять моя ошибка, к сожалению не могу поправить код на пастебине (заблокировал зараза) но ошибка исправляется так:

Надо заменить в коде следующее

io.write на file:write

io.close на file:close

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

За то я понимаю твой единственный код, и (спасибо что разрешил) буду постепенно модифицировать его, те учиться на нём (Хотя бы освою базовые функции)

Только вот еще решаю проблему с автозапуском на OpenOC. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

За то я понимаю твой единственный код, и (спасибо что разрешил) буду постепенно модифицировать его, те учиться на нём (Хотя бы освою базовые функции)

Только вот еще решаю проблему с автозапуском на OpenOC. 

 

https://fingercomp.gitbooks.io/oc-cookbook/content/openos/autorun.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...