Namespaces
Variants
Actions
(Redirected from Persistência em PySymbian)

Archived:Persistência em PySymbian

Jump to: navigation, search
Archived.png
Aquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Dados do artigo

Artigo
Tradução:
Por _katy_
Última alteração feita por hamishwillee em 07 May 2013

A classe abaixo está encapsula um arquivo e32dbm em PySymbian, podendo ser usada como persistência.

import e32dbm
 
class PersistentStorage:
def __init__(self,filename):
try:
# Tenta abrir um arquivo existente
self.data = e32dbm.open(filename,"wf")
except:
# Falhou: Assume que o arquivo precisa ser criado
self.data = e32dbm.open(filename,"nf")
 
def SetValue(self,key,value):
if str(value) == value:
# Se o valor for uma String precisará de um tratamento especial
self.config[key] = "u\"%s\"" % value
else:
# Caso contrário simplesmente converte o valor para uma String
self.config[key] = str(value)
 
def GetValue(self,key):
try:
return eval(self.config[key])
except:
# Assume que o item ainda não existe, assim retorna o valor "None"
return None
 
def Close(self):
self.data.close()

Como usar o código

O código abaixo mostra como usar essa classe para persistência.

import appuifw
import persistentstorage
 
def Main():
 
# Cria um local para armazenamento
storage = PersistentStorage("e:\\config")
 
# Recupera a posição
position = storage.GetValue("position")
 
# Define um valor padrão caso não exita
if position == None:
position = (51.47,5.48)
 
# Solicita novos valores, mostrando o valor atual como padrão
latitude = appuifw.query(u"Latitude:","float",position[0])
longitude = appuifw.query(u"Longitude:","float",position[1])
 
# Se um novo valor for fornecido, este é gravado
if latitude != None and longitude != None:
storage.SetValue("position",(latitude,longitude))
 
storage.Close()
 
Main()

Oposições

O método PersistentStorage.SetValue() empacota uma string entre aspas para ter uma avaliação posterior com eval() apropriada. Entretanto, isso não funciona corretamente se você usar barras invertidas numa string. Basicamente você tem que duplicar cada barra invertida para ter uma resposta da função eval() correta. Para complementar, o código para fazer isso automaticamente será um exercício para o leitor.

This page was last modified on 7 May 2013, at 14:07.
132 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved