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


Фотография

Неправильная работа функции


Лучший Ответ SDV , 05 Январь 2017 - 14:45

Я пока еще нуб, но как смог организовал рабочую часть магазина, но часть не работает:
в файле shopcount.cfg записан номер заказа, сначала 1. 
getLastShopNumber() выдает nil со 2 раза, почему то значение в файле shopcount удаляется. Почему? Вроде все правильно сделал

Ну почему Вы так любите технологии динозавров? Запись в файл, как в колхозе сохраняем построчно. Ну что это такое вообще? Это никуда не годится.

Вы слышали что-нибудь про JSON? Очень удобная штука однако. И мало то очень удобно использовать ее для вывода чего угодно, а не ваши cfg с 1... 2... 3... 4.. 5... построчно.
Специально для вас сделал небольшой ребрендинг вашего кода, добавив 2 функции для чтения и сохранения JSON-а.
И для его использования необходима лишь легковесная JSON библиотека. Скачать ее можно тута

Ну и сам страшный код по спойлером:
Спойлер


P.S. Чтобы скрипт "не плювался" на вас attempt-ами, сразу создайте файл shopcount.json и добавьте в него [] и все. Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Оффлайн   RadioNurshat

RadioNurshat

    Почетный гость

  • Пользователи
  • 5 сообщений

Отправлено 05 Январь 2017 - 11:46

Привет всем, это снова я. 

Я пока еще нуб, но как смог организовал рабочую часть магазина, но часть не работает:

        --Нахождение последнего номера заказа
	local shopCounter = "Shop/shopcount.cfg"
	local function getLastShopNumber()
	  _G.cofile = io.open(shopCounter, "r")
	  stroka = cofile:read("*a")
	  local lastnumber = tonumber(serialization.unserialize(stroka))
	  return lastnumber
	end
	--Изменение последнего номера заказа
	local function changeLastShopNumber()
	 _G.cofile = io.open(shopCounter, "w")
	 cofile:write(serialization.serialize( getLastShopNumber() + 1))
	 cofile:close() 
	end

в файле shopcount.cfg записан номер заказа, сначала 1. 

getLastShopNumber() выдает nil со 2 раза, почему то значение в файле shopcount удаляется. Почему? Вроде все правильно сделал


Сообщение отредактировал RadioNurshat: 05 Январь 2017 - 11:47


#2 Оффлайн   Fingercomp

Fingercomp

    Видимый невидимый

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 832 сообщений

Награды

                                               

Отправлено 05 Январь 2017 - 12:35

  1. Почему юзаешь _G.cofile, а не local cofile?
  2. Почему не закрываешь файл в getLastShopNumber?
  3. local stroka = cofile:read("*a") должно быть.
  4. serialization.serialize не нужен. Используй tostring(getLastShopNumber() + 1).
  5. serialization.unserialize тоже не нужен. Уже есть tonumber.

Итого:

-- Нахождение последнего номера заказа
local shopCounter = "Shop/shopcount.cfg"

local function getLastShopNumber()
  local cofile = io.open(shopCounter, "r")
  local content = cofile:read("*a")
  cofile:close()
  return tonumber(content)
end

-- Изменение последнего номера заказа
local function changeLastShopNumber()
  local cofile = io.open(shopCounter, "w")
  cofile:write(tostring(getLastShopNumber() + 1))
  cofile:close()
end

Сообщение отредактировал Fingercomp: 05 Январь 2017 - 13:53


#3 Оффлайн   SDV

SDV

    #!/usr/bin/env python

  • Пользователи
  • PipPipPipPipPipPipPip
  • 568 сообщений
  • ГородO.R.E.N.B.U.R.G.

Награды

     

Отправлено 05 Январь 2017 - 14:45   Лучший Ответ

Я пока еще нуб, но как смог организовал рабочую часть магазина, но часть не работает:
в файле shopcount.cfg записан номер заказа, сначала 1. 
getLastShopNumber() выдает nil со 2 раза, почему то значение в файле shopcount удаляется. Почему? Вроде все правильно сделал

Ну почему Вы так любите технологии динозавров? Запись в файл, как в колхозе сохраняем построчно. Ну что это такое вообще? Это никуда не годится.

Вы слышали что-нибудь про JSON? Очень удобная штука однако. И мало то очень удобно использовать ее для вывода чего угодно, а не ваши cfg с 1... 2... 3... 4.. 5... построчно.
Специально для вас сделал небольшой ребрендинг вашего кода, добавив 2 функции для чтения и сохранения JSON-а.
И для его использования необходима лишь легковесная JSON библиотека. Скачать ее можно тута

Ну и сам страшный код по спойлером:
Спойлер


P.S. Чтобы скрипт "не плювался" на вас attempt-ами, сразу создайте файл shopcount.json и добавьте в него [] и все.
  • _Star_Craft_ это нравится

#4 Оффлайн   LeshaInc

LeshaInc

    2B |~ 2B

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 174 сообщений
  • ГородЛуна

Награды

                 

Отправлено 05 Январь 2017 - 15:23

 

overhead



#5 Оффлайн   SDV

SDV

    #!/usr/bin/env python

  • Пользователи
  • PipPipPipPipPipPipPip
  • 568 сообщений
  • ГородO.R.E.N.B.U.R.G.

Награды

     

Отправлено 05 Январь 2017 - 15:27

overhead

Мы не ищем легких путей  :D
Спойлер


#6 Оффлайн   LeshaInc

LeshaInc

    2B |~ 2B

  • Пользователи
  • PipPipPipPipPipPipPip
  • 1 174 сообщений
  • ГородЛуна

Награды

                 

Отправлено 05 Январь 2017 - 15:33

Мы не ищем легких путей  :D

Спойлер

 

Он одно число хранит, зачем json



#7 Оффлайн   SDV

SDV

    #!/usr/bin/env python

  • Пользователи
  • PipPipPipPipPipPipPip
  • 568 сообщений
  • ГородO.R.E.N.B.U.R.G.

Награды

     

Отправлено 05 Январь 2017 - 15:38

Он одно число хранит, зачем json

А так хоть можно историю заказов хранить к примеру.
Ну судя по коду это точно не то что напоминает банк Тоторо даже.
Одни какие-то txt файлы с одним значением. Точно какой-то колхоз. 2017 год к нам пришел называется.

Ну ладно тогда я умываю руки и ухожу отсюда.
Я лишь дал автору может быть более универсальный способ на будущее.
А ему решать что юзать JSON или txt.

#8 Оффлайн   RadioNurshat

RadioNurshat

    Почетный гость

  • Автор темы
  • Пользователи
  • 5 сообщений

Отправлено 05 Январь 2017 - 20:23

Спасибо)






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Яндекс.Метрика