Autore Topic: IF variabile=0 errore identificatore sconosciuto: variabile  (Letto 1463 volte)

Offline pj123

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Salve, a scuola stiamo studiando il vb (molto a rilento), e ho scoperto gambas proprio per necessità di un linguaggio simile a vb, ma che giri su linux.
A scuola ho abbozzato una calcolatrice, che, seppur presentando qualche errore, faceva il lavoro suo  ;D

Torno a casa, creo un nuovo progetto su gambas e rifaccio lo scheletro della calcolatrice (bottoni, textbox), come nomi metto li stessi che avevo usato a scuola, e copio&incollo la parte testuale.

Quando provo ad eseguire mi segna come errore "Unknow identifier: operatore" (operatore è una variabile)

Codice: [Seleziona]
PRIVATE SUB Command0_Click(Index AS Integer) 
  IF operatore = 0 THEN
      a = (a * 10) + 0
      textbox.Text = a
  ELSE
      b = (b * 10) + 0
      textbox.Text = b
  END IF
END SUB
Questo è il codice del bottone del numero 0, ma da lo stesso errore per ogni bottone.

Codice: [Seleziona]
PRIVATE SUB Form_Load() 
  DIM a, b, ris, operatore AS Float
  operatore = 0
  a = 0
  b = 0
END SUB
Qui ci sono le definizioni delle variabili.
Qualcuno sa aiutarmi? :(

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #1 il: 08 Novembre 2011, 19:29:06 »
Ciao e benvenuto.

Da ciò che hai postato leggo che la variabile operatore viene dichiarata all'interno di Form_Load come locale (DIM) e invece nelle varie funzioni la cerchi come se fosse globale. Hai due strade

1) Semplice e poco elegante: Dichiari operatore come variabile globale e sei a posto
2) Contorta ma altamente soddisfacente: Crei una funzione che possa leggere il contenuto di operatore dichiarato all'interno della sub.... ;D

A te la scelta.

Offline pj123

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #2 il: 08 Novembre 2011, 19:40:04 »
in effetti, ha senso quello che dici  :mad:
infatti su windows avevo dichiarato la variabile fuori dalle funzioni, sempre con dim.
Se provo a farlo con gambas mi da un altro errore, "Unexpected DIM alla linea 2 in FMain.class"

Credo di aver capito la logica dell'altro metodo, ma sono un novellino in programmazione e ancor di più in vb^^ Abbiamo fatto un utilissimo anno di C, è stato un cambiamento troppo drastico, questo  ;D

Qualche dritta?

EDIT: Aggiungo che sarebbe molto più comodo il primo metodo, dato che uso quella variabile in 5 funzioni diverse

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #3 il: 08 Novembre 2011, 23:19:00 »

infatti su windows avevo dichiarato la variabile fuori dalle funzioni, sempre con dim.
Se provo a farlo con gambas mi da un altro errore, "Unexpected DIM alla linea 2 in FMain.class"

 :ciao:

...senza DIM in Gambas all'esterno:

spesso basta anche solo:

variabile As Integer (o quello che è)  <------------

Public sub.......()
etc.. etc...
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pj123

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #4 il: 09 Novembre 2011, 02:34:15 »
Ahhh quindi c'è qualche differenza ^^
Altra cosa che non funge.. Quando clicco su un tasto (dopo aver mandato in esecuzione il programma)... non succede nulla, non compare nella textbox.
Come struttura, quello che ho fatto funziona... quindi è un errore di sintassi. Cosa potrebbe essere? Cosa posso copia&incollarvi per aiutarvi a capire? :P

La modifica alla textbox la faccio così:
Codice: [Seleziona]
nome_textbox.Text = nome_variabile
nome_textbox.Text = "testo"
in base a cosa voglio scriverci.. help :(

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #5 il: 09 Novembre 2011, 09:44:57 »
Ahhh quindi c'è qualche differenza ^^
Altra cosa che non funge.. Quando clicco su un tasto (dopo aver mandato in esecuzione il programma)... non succede nulla, non compare nella textbox.
Come struttura, quello che ho fatto funziona... quindi è un errore di sintassi. Cosa potrebbe essere? Cosa posso copia&incollarvi per aiutarvi a capire? :P

La modifica alla textbox la faccio così:
Codice: [Seleziona]
nome_textbox.Text = nome_variabile
nome_textbox.Text = "testo"
in base a cosa voglio scriverci.. help :(

Sarebbe meglio se per ogni problema tu aprissi un post a parte così che chi cerca in futuro di risolvere la stessa problematica abbia dei risultati mirati e coerenti. Ora continuiamo qui ma ricordalo la prossima volta.... :)

Il codice che hai scritto può andar bene ma, non so se sia voluto, la stampa della stringa "testo" sovrascrive quella di nome_variabile. Nel caso fosse un problema si risolve semplicemente con:

Codice: [Seleziona]
nome_textbox.Text = nome_variabile
nome_textbox.Text += "testo"

Inoltre, qualora tu non abbia letto il sito ufficiale di gambas, preciso che gambas non è un clone di Visual Basic. Questo vuol dire che non basta un copia incola di un sorgente VB per avere un codice gambas funzionante. I due linguaggi hanno la stessa radice ma sintassi differenti anche se simili.

Allega al messaggio tutto il sorgente su cui stai lavorando comprimendolo con tar così vediamo di trovare il problema.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #6 il: 09 Novembre 2011, 10:49:27 »
Ahhh quindi c'è qualche differenza ^^


Anch'io ho coominciato con VB. Le differenze con Gambas ci sono: come ha ricordato, tra l'altro, Ceskho, Gambas non è un semplice un clone di Vb.

Io credo che ti conviene comunque dare uno sguardo alla documentazione ed al manuale (se fai una ricerca anche qui nel forum, puoi trovare il collegamento al sito dove puoi trovare la traduzione in italiano; anche se ormai si può dire che quel contiene sostanzialmente le cose basilari): almeno così eviti ed elimini i problemi, errori e dubbi iniziali.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pj123

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #7 il: 09 Novembre 2011, 14:27:45 »
Il codice che hai scritto può andar bene ma, non so se sia voluto, la stampa della stringa "testo" sovrascrive quella di nome_variabile. Nel caso fosse un problema si risolve semplicemente con:

Codice: [Seleziona]
nome_textbox.Text = nome_variabile
nome_textbox.Text += "testo"

Inoltre, qualora tu non abbia letto il sito ufficiale di gambas, preciso che gambas non è un clone di Visual Basic. Questo vuol dire che non basta un copia incola di un sorgente VB per avere un codice gambas funzionante. I due linguaggi hanno la stessa radice ma sintassi differenti anche se simili.

Allega al messaggio tutto il sorgente su cui stai lavorando comprimendolo con tar così vediamo di trovare il problema.

Sìsì quello lo sapevo, intendevo dire che per modificare una textbox uso uno di quei due modi^^

Allego il tar, e mi scuso per non aver aperto altri post, in genere i moderatori si lamentano se se ne aprono altri..

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: IF variabile=0 errore identificatore sconosciuto: variabile
« Risposta #8 il: 09 Novembre 2011, 15:04:14 »
Comunque un'occhiata al wiki sarebbe un'ottima cosa, in particolare il concetto di variabile e visibilità/vita della stessa.