Gambas-it

Gambas3 => Programmazione => Topic aperto da: nello79 - 20 Febbraio 2012, 23:39:37

Titolo: Errore in FMain
Inserito da: nello79 - 20 Febbraio 2012, 23:39:37
Ragazzi, nel convertire un progetto da gambas2 a gambas3 ottengo questo errore: "form.x incorrectly overridden  in class FMain" cosa vuol dire? come lo elimino?
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 20 Febbraio 2012, 23:47:43
probabilmente hai una variabile nel form di nome form che si chiama x che in realta è una proprieta del form e quindi non la puoi usare come nome di variabile,

se non è quello posta tutto il codice del form che ti da errore
Titolo: Re: Errore in FMain
Inserito da: nello79 - 21 Febbraio 2012, 00:29:04
Ok l'errore era proprio quello  :ok: ora però in un punto ottengo questo errore cosa vuol dire? " Type mismatch: wanted Float, got String instead" e lo ottengo a questa riga di codice: Pointy.Add(CFloat(Mid(stringa, py + 1)), indice).
Prima di questa ho una stringa simile che invece funziona: Pointx.Add(CFloat(Mid(stringa, px + 1, py - px - 1)), indice)
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 21 Febbraio 2012, 09:47:49
probabile che all' intern di stringa ci sia un valore con la virgola come separatore mentre gambas vuole ch eci sia una virgola, nella seconda riga probabilmente non c'erano decimali

prova con:

Pointy.Add(CFloat(replace(Mid(stringa, py + 1)),",","."), indice).
Titolo: Re: Errore in FMain
Inserito da: nello79 - 22 Febbraio 2012, 00:40:03
Niente da fare.. neanche con il tuo codice funziona, mi ritorna questo errore: not enough arguments to Replace().
Ma il problema è che nella stringa non ci sono neanche i decimali. In pratica la stringa è questa: G00X70Y0
Sulla X funziona e sulla Y no. Ma su gambas2 funziona correttamente anche con il mio codice..
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 22 Febbraio 2012, 09:06:25
se nella stringa in questione non ci sono mai dei decimali , non dovresti usare cfloat, prova con val  oppure con cint


Citazione
mi ritorna questo errore: not enough arguments to Replace().
avevo scritto male , dovrebbe essere:
Codice: [Seleziona]
Pointy.Add(CFloat(replace(Mid(stringa, py + 1),",",".")), indice).
Titolo: Re: Errore in FMain
Inserito da: nello79 - 22 Febbraio 2012, 23:38:16
Citazione
Pointy.Add(CFloat(replace(Mid(stringa, py + 1),",",".")), indice).
Purtroppo anche in questo modo mi ritorna: Type mismatch: wanted Float, got String instead  :hatecomputer:
Ma perchè con gambas2 funzionava perfettamente e ora con gambas3 non va più  :'(

Citazione
Type mismatch: wanted Float, got String instead
Nelle altre stringhe ci sono i decimali, devo utilizzare cfloat.
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 23 Febbraio 2012, 12:46:18
suddividi il codice, e poi controlla effettivamente dove si blocca e il valore delle variabili
Codice: [Seleziona]

stringa_valore=Mid(stringa, px + 1, py - px - 1))
float_valore=CFloat(stringa_valore)
Pointx.Add(float_valore, indice)



controlla bene che stringa sia effettivamente una stringa che contiene solo valori numerici, altrimenti è normale che ti dia errore

se hai una come separatore dei decimali la virgola:

Codice: [Seleziona]
stringa_valore=Mid(stringa, px + 1, py - px - 1))
stringa_valore=replace(stringa_valore,",",".")
float_valore=CFloat(stringa_valore)
Pointx.Add(float_valore, indice)

Titolo: Re: Errore in FMain
Inserito da: nello79 - 23 Febbraio 2012, 16:10:49
Allora.. non ho ancora provato come dici tu perchè ora non sono a casa ma una cosa ricordo che quando mi da l'errore se nell' IDE visualizzo il valore della stringa mi da G00X70Y0\r ma non potrebbe essere quel \r a dar problemi? Che cos'è?
Titolo: Re: Errore in FMain
Inserito da: milio - 23 Febbraio 2012, 17:33:30
Se il problema è quel carattere, prima di processare la tua stringa la passi nella funzione Trim() cosi' ti elimina spazi o ritorni a capo indesiderati.
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 23 Febbraio 2012, 18:24:53
soprattutto devi vedere il valore della stringa che passi a cflot se contiene qualsiasi carattere che non sia numerico ti genera errore
Titolo: Re: Errore in FMain
Inserito da: nello79 - 23 Febbraio 2012, 23:56:15
Ahhh... Finalmente ne sono uscito, non so proprio come ringraziarvi il problema era proprio quel \r, che poi non capisco perchè con gambas2 funzionava senza problemi e ora invece da problemi. Ma poi a cosa corrisponde \r? Sapevo che il ritorno a capo è \n.
Un'altra curiosità, ho notato una certa lentezza nell'esecuzione del programma invece con gambas2 era molto più reattivo. Da cosa può dipendere? Considerando che il programma è il medesimo.
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 24 Febbraio 2012, 12:19:40
bisognerebbe sapere cosa utilizza il programma...

ad esempio disegnando  su una drawing area con cache inserita come in gambas  questo rallenta anche altre finestre .
mentre disabilitando al cache e inserendo il codice di disegno nel metodo draw della drawing tutto torna velocissimo.

ma comunque non sapendo che componenti utilizza il programma non si può capire quale sia la causa.

io ti ho scritto quello sulla drawing perchè mi è successo :)
Titolo: Re: Errore in FMain
Inserito da: nello79 - 24 Febbraio 2012, 12:43:03
Ma no guarda il programma è ancora all'inizio e non fa nulla di particolarmente gravoso in pratica legge le quote X e Y da un file di testo e le disegna nella drawing area. Comunque stasera proverò a disabilitare la cache e vedere se cambia qualcosa. Ma in che maniera si inserisce il codice di disegno nel metodo draw? Scusami ma sono ignorante nella programmazione..
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 24 Febbraio 2012, 13:10:59
semplicemente tutto il codice che si occupa del disegno lo scri all' interno del metodo

public sub drawingarea1_draw()


end


quando vuoi che venga ridisegnata la drawingarea

darai:

drawingarea1.refresh
Titolo: Re: Errore in FMain
Inserito da: nello79 - 25 Febbraio 2012, 00:35:59
Uff niente da fare, ciò provato ma ottengo troppi errori poi nel momento in cui mi dice che in un ciclo for può utilizzare solo variabili locali mi sono arreso.
 
Titolo: Re: Errore in FMain
Inserito da: fsurfing - 25 Febbraio 2012, 18:17:34
in un ciclo for puoi usare solo variabili locali , nel senso che in


for i=0 to 50


i deve essere locale , ma se all' intenro del ciclo ci sono altre variabili possono  essere globali

al limite allega i sorgenti e vediamo dove sta il problema