Jump to content
Nokioteca Forum

GuglielmoS

Utente
  • Contenuti

    7
  • Data iscrizione

  • Ultimo accesso

Info Contatti

  • URL Sito Web
    http://

Altre Informazioni

  • Smartphone
    6220c

GuglielmoS's Achievements

Newbie

Newbie (1/14)

0

Reputazione

  1. GuglielmoS

    Antivirus

    Vai tranquillo anche senza!
  2. Credo sia interessante, però una cosa molto scomoda che ho notato è il fatto che le espressioni logiche e credo anche aritmetiche sono tutto in notazione polacca; se tu devi scrivere "10 + 2", devi mettere "+ 10 2". Per il resto non so bene come sia, quindi staremo a vedere. Saluti GuglielmoS.
  3. Mi dispiace dirtelo ma non esiste per cellulari una cosa simile. Già sui PC devi andare a scomodare distribuzioni linux create ad hoc con i vari tool, e fidati non è una cosa semplice. Soprattutto sono riechieste buona capacità elaborative da parte del computer, quindi immagina te sui cellulari ... Ciao GuglielmoS
  4. Ciao a tutti e scusate se rompo ancora, ma non riesco proprio a capire per quale motivo ci sia questa eccezione, la quale mi indica che l'indice passatogli non è valido. Adesso il codice non sarà ottimizzato e dovrò migliorarlo, però teoricamente dovrebbe riuscire a salvarmi e a leggermi dal RecordStore che gli ho definito(anche quando richiamo il metodo RecordStore.openRecordStore, il secondo parametro è a true per indicargli di creare il RS se non esiste). Il problema si presenta quindi quando a clickare sul comando salva della midlet. Codice della MIDlet: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.Date; public class MoneyMidlet extends MIDlet implements CommandListener { // Componenti Grafici private Display display; private Form formPrincipale; private Command cmdExit; private Command cmdSave; private StringItem strDataInizio; private StringItem credits; private TextField txtMoneteDa2; private TextField txtMoneteDa1; private TextField txtMoneteDa50; // Componenti per i dati private Money monete; public MoneyMidlet() { display = Display.getDisplay(this); // Istanzio i vari oggetti del form formPrincipale = new Form("MyMoney - Gestione Monete"); cmdExit = new Command("Esci", Command.EXIT, 1); cmdSave = new Command("Salva", Command.OK, 2); txtMoneteDa2 = new TextField("Monete Da 2:", null, 5, TextField.NUMERIC); txtMoneteDa1 = new TextField("Monete Da 1:", null, 5, TextField.NUMERIC); txtMoneteDa50 = new TextField("Monete Da 50:", null, 5, TextField.NUMERIC); strDataInizio = new StringItem("Data Inizio Raccolta: ", ""); credits = new StringItem("Autore del Programma:", "GuglielmoS"); // Istanzio l'oggetto per la gestione dei dati monete = new Money(); // Se è la prima volta che viene avviata la midlet setto tutto a 0 if (monete.isFirstTime()) { strDataInizio.setText(new Date().toString()); txtMoneteDa2.setString("0"); txtMoneteDa1.setString("0"); txtMoneteDa50.setString("0"); } else { loadFromRS(); } } public void loadFromRS() { strDataInizio.setText(monete.getDataInizioRaccolta()); txtMoneteDa2.setString(Integer.toString(monete.getMoneteDa2())); txtMoneteDa1.setString(Integer.toString(monete.getMoneteDa1())); txtMoneteDa50.setString(Integer.toString(monete.getMoneteDa50())); } protected void startApp() throws MIDletStateChangeException { // Aggiungo al form i vari componenti formPrincipale.append(credits); formPrincipale.append(strDataInizio); formPrincipale.append(txtMoneteDa2); formPrincipale.append(txtMoneteDa1); formPrincipale.append(txtMoneteDa50); formPrincipale.addCommand(cmdExit); formPrincipale.addCommand(cmdSave); formPrincipale.setCommandListener(this); // Setto formPrincipale sul display display.setCurrent(formPrincipale); } protected void pauseApp() { notifyPaused(); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} public void commandAction(Command c, Displayable arg1) { if (c == cmdExit) { notifyDestroyed(); } else if (c == cmdSave) { monete.setDataInizioRaccolta(strDataInizio.getText()); monete.setMoneteDa2(Integer.parseInt(txtMoneteDa2.getString())); monete.setMoneteDa1(Integer.parseInt(txtMoneteDa1.getString())); monete.setMoneteDa50(Integer.parseInt(txtMoneteDa50.getString())); monete.saveToRS(); } } } Classe utilizzata nella MIDlet: import javax.microedition.rms.*; public class Money { private RecordStore dataBase; final static private String DBNAME = "mymoney_db"; private int nMonete2; private int nMonete1; private int nMonete50; private String dataInizioRaccolta; private boolean firstTime; private byte[] buff1 = new byte[10]; private byte[] buff2 = new byte[5]; private byte[] buff3 = new byte[5]; private byte[] buff4 = new byte[5]; public Money() { firstTime = true; // Tento di aprire il record store try { dataBase = RecordStore.openRecordStore(DBNAME, true); } catch (RecordStoreException rse) { rse.printStackTrace(); } // Leggo la quantità di monete e la data di inzio try { if (dataBase.getNumRecords() > 0) { try { dataBase.getRecord(0, buff1, 0); dataInizioRaccolta = new String(buff1); dataBase.getRecord(1, buff2, 0); nMonete2 = Integer.parseInt(new String(buff2)); dataBase.getRecord(2, buff3, 0); nMonete1 = Integer.parseInt(new String(buff3)); dataBase.getRecord(3, buff4, 0); nMonete50 = Integer.parseInt((new String(buff4))); dataBase.closeRecordStore(); } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } catch (InvalidRecordIDException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } firstTime = false; } } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } } // Metodi GETTER public int getMoneteDa2() { return nMonete2; } public int getMoneteDa1() { return nMonete1; } public int getMoneteDa50() { return nMonete50; } public String getDataInizioRaccolta() { return dataInizioRaccolta; } /** * @return true se è la prima volta che viene avviata la midlet, false altrimenti */ public boolean isFirstTime() { return firstTime; } // Metodi SETTER public void setDataInizioRaccolta(String dataInizioRaccolta) { this.dataInizioRaccolta = dataInizioRaccolta; } public void setMoneteDa2(int moneteDa2) { nMonete2 = moneteDa2; } public void setMoneteDa1(int moneteDa1) { nMonete1 = moneteDa1; } public void setMoneteDa50(int moneteDa50) { nMonete50 = moneteDa50; } public void saveToRS() { // Tento di aprire il record store try { dataBase = RecordStore.openRecordStore(DBNAME, true); } catch (RecordStoreException rse) { rse.printStackTrace(); } if (dataBase != null) { buff1 = dataInizioRaccolta.getBytes(); buff2 = (Integer.toString(nMonete2)).getBytes(); buff3 = (Integer.toString(nMonete1)).getBytes(); buff4 = (Integer.toString(nMonete50)).getBytes(); // Tento di scrivere nel record store try { dataBase.setRecord(0, buff1, 0, buff1.length); dataBase.setRecord(1, buff2, 0, buff2.length); dataBase.setRecord(2, buff3, 0, buff3.length); dataBase.setRecord(3, buff4, 0, buff4.length); dataBase.closeRecordStore(); } catch (InvalidRecordIDException e) { e.printStackTrace(); } catch (RecordStoreNotOpenException e) { e.printStackTrace(); } catch (RecordStoreFullException e) { e.printStackTrace(); } catch (RecordStoreException e) { e.printStackTrace(); } } } } Eccezione: javax.microedition.rms.InvalidRecordIDException at javax.microedition.rms.RecordStore.findRecord(+18) at javax.microedition.rms.RecordStore.setRecord(+56) at Money.saveToRS(+96) at MoneyMidlet.commandAction(+95) at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282) at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10) at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68) at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47) at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186) at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)
  5. OK ho proseguito "inscatolando" il tutto in una midlet, ed ora funziona. Per chi fosse interessato ecco il codice: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.io.*; public class CanvasExample extends MIDlet { private CanvasImage cImage; private Display display; public CanvasExample() { cImage = new CanvasImage(); display = Display.getDisplay(this); display.setCurrent(cImage); } protected void startApp() throws MIDletStateChangeException {} protected void pauseApp() { notifyPaused(); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} } class CanvasImage extends Canvas { private Image imgLol; private int width; private int height; private String lastKeyPressed; public CanvasImage() { lastKeyPressed = "Nessun tasto premuto"; // Carico l'immagine try { imgLol = Image.createImage("/image.png"); setFullScreenMode(true); width = getWidth(); height = getHeight(); } catch (IOException e) { e.printStackTrace(); } } protected void paint(Graphics g) { g.setColor(0x00F); g.fillRect(0, 0, width, height); if (imgLol != null) { g.drawImage(imgLol, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER); } g.setColor(0xFFF); g.drawString(lastKeyPressed, width/2, height - 10, Graphics.BASELINE | Graphics.HCENTER); } protected void keyPressed(int arg0) { switch (arg0) { case KEY_NUM0: lastKeyPressed = "Tasto 0 premuto!"; break; case KEY_NUM1: lastKeyPressed = "Tasto 1 premuto!"; break; case KEY_NUM2: lastKeyPressed = "Tasto 2 premuto!"; break; case KEY_NUM3: lastKeyPressed = "Tasto 3 premuto!"; break; case KEY_NUM4: lastKeyPressed = "Tasto 4 premuto!"; break; case KEY_NUM5: lastKeyPressed = "Tasto 5 premuto!"; break; case KEY_NUM6: lastKeyPressed = "Tasto 6 premuto!"; break; case KEY_NUM7: lastKeyPressed = "Tasto 7 premuto!"; break; case KEY_NUM8: lastKeyPressed = "Tasto 8 premuto!"; break; case KEY_NUM9: lastKeyPressed = "Tasto 9 premuto!"; break; } repaint(); } }
  6. Ciao a tutti, è da poco che sto sperimentando il linguaggio java nell'ambito della Micro Edition e mi stanno sorgendo già dei problemi, alcuni probabiblmente stupidi, che però in parte sono riuscito a risolvere, ma altri di cui non riesco a trovare la soluzione. In particolare ora sto seguendo la guida di html.it, e l'esempio dove si utilizzano i Canvas e si mostra una stringa con il tasto premuto, non riesco a simularlo con il WTK. Vi posto il codice che teoricamente dovrebbe funzionare. A me viene restituita un eccezione che mi dice che la classe non è una midlet(Questo lo so anche io, ma il codice è quello e sulla guida dice che funziona). Eccezione: Unable to create MIDlet CanvasExample java.lang.InstantiationException: Class not a MIDlet at com.sun.midp.midlet.MIDletState.createMIDlet(+66) at com.sun.midp.midlet.Selector.run(+22) Codice Sorgente: import javax.microedition.lcdui.*; import java.io.*; public class CanvasExample extends Canvas { private Image imgLol; private int width; private int height; private String lastKeyPressed; public CanvasExample() { lastKeyPressed = "Nessun tasto premuto"; // Carico l'immagine try { imgLol = Image.createImage("/image.png"); setFullScreenMode(true); width = getWidth(); height = getHeight(); } catch (IOException e) { e.printStackTrace(); } } protected void paint(Graphics g) { g.setColor(0x00F); g.fillRect(0, 0, width, height); if (imgLol != null) { g.drawImage(imgLol, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER); } g.setColor(0xFFF); g.drawString(lastKeyPressed, width/2, height - 10, Graphics.BASELINE | Graphics.HCENTER); } protected void keyPressed(int arg0) { switch (arg0) { case KEY_NUM0: lastKeyPressed = "Tasto 0 premuto!"; break; case KEY_NUM1: lastKeyPressed = "Tasto 1 premuto!"; break; case KEY_NUM2: lastKeyPressed = "Tasto 2 premuto!"; break; case KEY_NUM3: lastKeyPressed = "Tasto 3 premuto!"; break; case KEY_NUM4: lastKeyPressed = "Tasto 4 premuto!"; break; case KEY_NUM5: lastKeyPressed = "Tasto 5 premuto!"; break; case KEY_NUM6: lastKeyPressed = "Tasto 6 premuto!"; break; case KEY_NUM7: lastKeyPressed = "Tasto 7 premuto!"; break; case KEY_NUM8: lastKeyPressed = "Tasto 8 premuto!"; break; case KEY_NUM9: lastKeyPressed = "Tasto 9 premuto!"; break; } repaint(); } }
  7. GuglielmoS

    Salve A Tutti!

    Salve a tutti!!! Mi chiamo Guglielmo, ho 17 anni e frequento l'ITIS informatico. Sono molto appassionato di programmazione, computer e cellulari. Il nokia che ho è il 6220 classic.
×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy