mShell - Errore

Stato
Discussione chiusa ad ulteriori risposte.

Yoda

Utente Silver
10 Ottobre 2008
10
1
0
61
Stò realizzando un prgrammino per cellulari usando mShell, molto intuitivo ricorda java, c++, j2me e pascal :asd: (e anche vbscript siccome non serve specificare il tipo di variabile inizializzata :asd: ). Il punto è che quando vado a provare il codice (o parti di esso) mi viene fuori errore (direttamente alla compilazione) quando tento di eseguire i seguenti comandi:

- files.exists("percorso file") fa ritornare un valore booleano, true se il file specificato esiste, false se non esiste;

- files.delete("percorso file") cancella il file specificato;

- rmdir("percorso") cancella la directory specificata;

L'errore è: " No such local variable or field "

Non sò se sbaglio la sintassi o qualcos'altro... O provato a vedre sul sito di mShell o su Google ma non ho trovato niente oppure non, mi è stato utile :dodgy:. Se qualcuno è più esperto prego di illuminarmi :idea: in questi comandi XD :incredimg:
 
be ecco (non posto tutto il codice xkè è lungo e non voglio che mi freghino l'idea):

Codice:
function cancella(percorso)
   if files.exist(percorso) then
      files.delete(percorso);
      print(percorso);
   end
end;

la funzione la chiamo così:

Codice:
cancella("E:\\prova.txt");

{sono degli esempi}

la stessa cosa succede per il comando rmdir solo che cambia il nome della funzione e il percorso e una cartella non un file.

Non è che forse devo importare qualcosa???
Ad esempio per creare il menu devo scrivere all'inizio "use ui"... Non è che per usare questi comandi devo mettere qualcos'altro?
 
io non sono un programmatore ma così ad occhio questo: if files.exist(percorso) then mi sembra errato, cioè come fai a controllare il valore ritornato da files.exist? non potrebbe essere qualcosa tipo: if {files.exist(percorso) == 0/true/obyOnekenobi} then drink??? ho detto una cazzata??? comunque vedrai che qualcuno saprà aiutarti =)
ciaoz
ps:magari fai una presentazione ;) non obbligatoria ma gradita =)
 
weed ha detto:
io non sono un programmatore ma così ad occhio questo: if files.exist(percorso) then mi sembra errato, cioè come fai a controllare il valore ritornato da files.exist? non potrebbe essere qualcosa tipo: if {files.exist(percorso) == 0/true/obyOnekenobi} then drink??? ho detto una cazzata???
Ma no, questa è la tipica sintassi del pazzo del vb.

Per quanto riguarda l'op, l'errore potrebbe voler dire diverse cose: che non vede la definizione delle funzioni, o che alla funzione stai passando qualcosa che non esiste... più dettagli sugli errori e sul codice si possono avere? Non conosco il linguaggio, su due piedi non so che dirti.
 
ero consapevole di averla sparata =)!!! vabbè me ne ritorno nel mio angolino... però mi è rimasto il dubbio, come fa a sapere il valore ritornato da quella funzione??????
 
weed ha detto:
ero consapevole di averla sparata =)!!! vabbè me ne ritorno nel mio angolino... però mi è rimasto il dubbio, come fa a sapere il valore ritornato da quella funzione??????

[ot]Mentre nelle sintassi c-like si fa uso delle parentesi per definire dove finisce uno statement:
Codice:
if ( files.exists( percorso ) ) {dowhatever();}
Il vb è pensato diversamente. Lo statement da valutare (facendo in modo che il linguaggio capisca se corrisponde a un true o un false, e comportandosi di conseguenza) corrisponde a ciò che è contenuto tra le parole chiave if e then. Quindi in:
Codice:
 if files.exists(percorso) then 
     doWhatYouWantCusAPirateIsFree( "You are a Pirate!" )
l'espressione da valutare è appunto "files.exists()", ovvero la funzione che restituisce il nostro boleano.
La risposa alla tua domanda "come fa a sapere il valore ritornato" suppongo voglia dire "come fa a sapere qual'è lo statement", semplicemente la meccanica del linguaggio usa le parole chiave stesse come delimitatori dell'espressione piuttosto che le parentesi.
[IMHO]Questa è ovviamente una schifezza a livello di sintassi, le parentesi sono molto più comode, immediate, ordinate e belle da vedere; ma a parer loro (la microsoft) così il linguaggio sembrava più naturale agli occhi di un user umano, credo. C'è da dire che parlo da amatore della sintassi c-like, il tipo di persona da HURR PYTHON merd* DURR.[/IMHO][/ot]

EDIT: butto là: hai incluso tutti gli header necessari? Forse per usare la classe statica files devi aggiungere
Codice:
use IO
 
[ot]
l'espressione da valutare è appunto "files.exists()", ovvero la funzione che restituisce il nostro boleano.
è proprio questo che mi ha confuso, in quanto non si specifica se il valore dev'essere vero o falso per continuare il codice...
Ho sempre pensato all'if come: se si verifica l'espressione esegui questo codice, altrimenti esegui quell' altro (se c'è)... Qui invece devo dedurre che si dia per scontato che files.exists() torni vero per continuare col programma, in quanto non specifico se devo eseguire il codice quando torna vero o quando torna falso... `scusami se mi spiego male, ma non sono discorsi da fare dopo una notte in piedi =) :rulezmg: [/ot]
 
weed ha detto:
[ot]
l'espressione da valutare è appunto "files.exists()", ovvero la funzione che restituisce il nostro boleano.
è proprio questo che mi ha confuso, in quanto non si specifica se il valore dev'essere vero o falso per continuare il codice...
Ho sempre pensato all'if come: se si verifica l'espressione esegui questo codice, altrimenti esegui quell' altro (se c'è)... Qui invece devo dedurre che si dia per scontato che files.exists() torni vero per continuare col programma, in quanto non specifico se devo eseguire il codice quando torna vero o quando torna falso... `scusami se mi spiego male, ma non sono discorsi da fare dopo una notte in piedi =) :rulezmg: [/ot]

[ot]Concordo sul "non sono discorsi da fare dopo una notte in piedi", ma mi sforzerò di farmi capire ;)
Le istruzioni condizionali (l'if come le condizioni dei cicli et cetera) non presuppongono l'esistenza di un confronto, loro eseguono semplicemente questo o quel blocco di codice in funzione della veridicità di un'espressione (almeno, nella stragrande maggioranza dei linguaggi). Per fartela facile, quando tu scrivi
Codice:
if (value == 2)
il linguaggio non fa altro che valutare la veridicità dell'espressione (true o false) e successivamente fare in modo che sia eseguito del codice in funzione di questo (nel caso dell'if: se l'espressione è vera, esegui li codice; se falsa, passa oltre;). Come vedi, non c'è alcuna differenza tra quello visto sopra e, ad esempio:
Codice:
if ( isDefined(someVar) )
dove la funzione isDefined ritornerà true se someVar è stata definita o false in caso contrario. Capisci quindi che un if non fa altro che accettare un valore bool e comportarsi di conseguenza.
Un appunto: scrivendo
Codice:
while( 1 ) { doSomething() };
in C o C++, il numero intero 1 viene convertito in bool, e corrisponderà a true (questo lo sai), ma la regola NON è generale in questo caso, in altri linguaggi (vedi C#) le istruzioni condizionali vogliono solo e soltanto un bool, quindi se volessi fare un ciclo infinito in C#, dovrei fare:
Codice:
while ( true ) { doSomething(); }

Ma mo basta con l'ot :)[/ot]
 
risolto dovevo importare oltre a "ui" ed "io"... indovinate che cosa????..... "files" :dodgy::dodgy::dodgy::dodgy:
 
orakool ha detto:
weed ha detto:
[ot]
l'espressione da valutare è appunto "files.exists()", ovvero la funzione che restituisce il nostro boleano.
è proprio questo che mi ha confuso, in quanto non si specifica se il valore dev'essere vero o falso per continuare il codice...
Ho sempre pensato all'if come: se si verifica l'espressione esegui questo codice, altrimenti esegui quell' altro (se c'è)... Qui invece devo dedurre che si dia per scontato che files.exists() torni vero per continuare col programma, in quanto non specifico se devo eseguire il codice quando torna vero o quando torna falso... `scusami se mi spiego male, ma non sono discorsi da fare dopo una notte in piedi =) :rulezmg: [/ot]

[ot]Concordo sul "non sono discorsi da fare dopo una notte in piedi", ma mi sforzerò di farmi capire ;)
Le istruzioni condizionali (l'if come le condizioni dei cicli et cetera) non presuppongono l'esistenza di un confronto, loro eseguono semplicemente questo o quel blocco di codice in funzione della veridicità di un'espressione (almeno, nella stragrande maggioranza dei linguaggi). Per fartela facile, quando tu scrivi
Codice:
if (value == 2)
il linguaggio non fa altro che valutare la veridicità dell'espressione (true o false) e successivamente fare in modo che sia eseguito del codice in funzione di questo (nel caso dell'if: se l'espressione è vera, esegui li codice; se falsa, passa oltre;). Come vedi, non c'è alcuna differenza tra quello visto sopra e, ad esempio:
Codice:
if ( isDefined(someVar) )
dove la funzione isDefined ritornerà true se someVar è stata definita o false in caso contrario. Capisci quindi che un if non fa altro che accettare un valore bool e comportarsi di conseguenza.
Un appunto: scrivendo
Codice:
while( 1 ) { doSomething() };
in C o C++, il numero intero 1 viene convertito in bool, e corrisponderà a true (questo lo sai), ma la regola NON è generale in questo caso, in altri linguaggi (vedi C#) le istruzioni condizionali vogliono solo e soltanto un bool, quindi se volessi fare un ciclo infinito in C#, dovrei fare:
Codice:
while ( true ) { doSomething(); }

Ma mo basta con l'ot :)[/ot]
[ot]lol il ripassino!!!!
grazie mille frà sei stato gentile e disponibile com al solito!!! =)
bella[/ot]
 
Yoda ha detto:
risolto dovevo importare oltre a "ui" ed "io"... indovinate che cosa????..... "files" :dodgy::dodgy::dodgy::dodgy:

lol, vabbeh aggiungo tag risolto ;)

bronsa ha detto:
su symbian la path non è
E://cacca.txt
Bensì
E:/cacca.txt

BRONSA THE FAILMAN: che diavolo c'entra, è una specifica del linguaggio che le slash vadano escapate, come per quasi tutti i linguaggi.
 
orakool ha detto:
Yoda ha detto:
risolto dovevo importare oltre a "ui" ed "io"... indovinate che cosa????..... "files" :dodgy::dodgy::dodgy::dodgy:

lol, vabbeh aggiungo tag risolto ;)

bronsa ha detto:
su symbian la path non è
E://cacca.txt
Bensì
E:/cacca.txt

BRONSA THE FAILMAN: che diavolo c'entra, è una specifica del linguaggio che le slash vadano escapate, come per quasi tutti i linguaggi.
che pazzo ne so, non conosco il linguaggio e non in ogni linguaggio funziona così, ho dato un idea visto che non aveva ancora ottenuto soluzione.
 
bronsa ha detto:
orakool ha detto:
Yoda ha detto:
risolto dovevo importare oltre a "ui" ed "io"... indovinate che cosa????..... "files" :dodgy::dodgy::dodgy::dodgy:

lol, vabbeh aggiungo tag risolto ;)

bronsa ha detto:
su symbian la path non è
E://cacca.txt
Bensì
E:/cacca.txt

BRONSA THE FAILMAN: che diavolo c'entra, è una specifica del linguaggio che le slash vadano escapate, come per quasi tutti i linguaggi.
che pazzo ne so, non conosco il linguaggio e non in ogni linguaggio funziona così, ho dato un idea visto che non aveva ancora ottenuto soluzione.
Scusami, ma se non hai conoscenze tali da poter aiutare perchè sparare balle a raffica?!non ti danno di certo il premio se acquisti il maggior PostCounter!! :-/
 
AlexZ ha detto:
bronsa ha detto:
orakool ha detto:
Yoda ha detto:
risolto dovevo importare oltre a "ui" ed "io"... indovinate che cosa????..... "files" :dodgy::dodgy::dodgy::dodgy:

lol, vabbeh aggiungo tag risolto ;)

bronsa ha detto:
su symbian la path non è
E://cacca.txt
Bensì
E:/cacca.txt

BRONSA THE FAILMAN: che diavolo c'entra, è una specifica del linguaggio che le slash vadano escapate, come per quasi tutti i linguaggi.
che pazzo ne so, non conosco il linguaggio e non in ogni linguaggio funziona così, ho dato un idea visto che non aveva ancora ottenuto soluzione.
Scusami, ma se non hai conoscenze tali da poter aiutare perchè sparare balle a raffica?!non ti danno di certo il premio se acquisti il maggior PostCounter!! :-/
 
Stato
Discussione chiusa ad ulteriori risposte.