Ir para o conteúdo

 Voltar a Linguagem Lua
Tela cheia

Guardar o estado em Lua quando reiniciar

26 de Novembro de 2009, 18:07 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 16 vezes

Pessoal estou com uma dúvida. Se eu tiver uma plicação Lua que tem um contador, vamos supor marcando o numero 540. Se eu reiniciar o vmware e iniciar a aplicação de novo o contador volta pra 0.

Têm como eu criar algum procedimento para o contador continuar em 540? se sim como?

Obrigado

Autor: Samir Cortás


33 comentários

  • 1e29d0095154ec9fed26313e9afb8f36?only path=false&size=50&d=404Manoel Campos da Silva Filho(usuário não autenticado)
    26 de Novembro de 2009, 19:22

     

    Para isso, vc deve salvar o contador num arquivo. A melhor forma de fazer isso é criar um arquivo lua de configuração contendo as variáveis que você deseja salvar. Assim, o seu programa, ao iniciar, deve carregar esse arquivo lua e antes de fechar, deve incrementar o contador e salvar de volta. Isso é bem simples de fazer. Veja o código abaixo:

     

    Considerando que você tem um arquivo de nome config.lua com
    o código abaixo:

    url = "http://manoelcampos.com"
    contador = 4

    E o arquivo lua com o código da sua aplicação, que carregará
    o arquivo config.lua, lerá o valor de contador, o incrementará, e atualizará o config.lua:

    --Nome do arquivo lua de configuração a ser lido
    local fileName = "config.lua"

    --Carrega o código do arquivo lua contendo as configurações
    local execFile, erro = loadfile(fileName)
    --Cria uma tabela para armazenar as variáveis existentes no arquivo de config
    local config = {}
    if execFile then
       --Define que as variáveis globais definidas no arquivo de config
       --serão definidas dentro da tabela local config
       setfenv(execFile, config)
       --Executa o código do arquivo de config, para criar as variáveis
       --existentes lá
       execFile()
    else
       print("Erro ao tentar compilar o arquivo ", fileName, ".\nMensagem de erro: ", erro)
    end;

    --se a variável contador não existir no arquivo de configuração,
    --define a mesma como zero
    config.contador = config.contador or 0
    print("contador ", config.contador)
    config.contador = config.contador + 1

    --Salva a tabela de configuração para arquivo,
    --contendo os novos valores dos campos de
    --configuração
    local arq = io.open(fileName, "w+")
    for key, value in pairs(config) do
        if type(value) == "string" then
           value = '"' .. value .. '"'
        end
        arq:write(key.." = "..value.."\n")
    end
    arq:close()

     

    • 65181a6a9fb8c0e192b65732f79daa4a?only path=false&size=50&d=404Samir Cortás(usuário não autenticado)
      27 de Novembro de 2009, 21:41

       

      manoel obrigado funcionou perfeitamente. Agora é apenas uma curiosidade .

      Qual tipo de arquivo em Lua q posso armazenar neste tipo de arquivo, poderia ter um banco de dados por exemplo?

       

      obrigado

      • 1e29d0095154ec9fed26313e9afb8f36?only path=false&size=50&d=404Manoel Campos da Silva Filho(usuário não autenticado)
        27 de Novembro de 2009, 21:47

         

        Cara, vc pode pensar naquele arquivo de configuração como um XML, onde vc tem dados estruturados, só que a manipualação é muito mais simples que um XML. Vc poderia usar arquivos neste formato para guardar dados sim, da mesma forma que se faz com XML.

Concurso ITU-T de Aplicações para IPTV 2012

13 de Agosto de 2012, 19:38, por Desconhecido

Gostaríamos de lembrar aos possíveis interessados que o prazo de registro para participação no Concurso ITU-T de Aplicações para IPTV 2012 (IPTV Application Challenge) se encerra nesta semana, dia 15 de agosto de 2012. Já o prazo para a submissão de aplicações se encerra no dia 07 de setembro de 2012.



NCL Eclipse 1.6 disponível

10 de Janeiro de 2012, 21:19, por Desconhecido

Caros membros da Comunidade Ginga,



Concursos de Aplicações Ginga-NCL

22 de Setembro de 2011, 3:22, por Desconhecido

    Gostaríamos de relembra-los de que há dois concursos de aplicações Ginga-NCL com inscrições ainda abertas. O convite é aberto a toda a comunidade de desenvolvedores de aplicações para o Middleware Ginga-NCL, em nível internacional. São os seguintes concursos:



Novas versões: Ginga e Ginga-NCL Virtual Set-top Box (v.0.12.3)

1 de Agosto de 2011, 20:58, por Desconhecido



Algumas Boas Notícias da Comunidade Ginga

28 de Julho de 2011, 21:31, por Desconhecido

Autor: Roberto Azevedo