Autore Topic: Errore in FMain  (Letto 1313 volte)

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Errore in FMain
« il: 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?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #1 il: 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

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Errore in FMain
« Risposta #2 il: 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)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #3 il: 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).

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Errore in FMain
« Risposta #4 il: 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..

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #5 il: 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).
« Ultima modifica: 22 Febbraio 2012, 09:09:50 da fsurfing »

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Errore in FMain
« Risposta #6 il: 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.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #7 il: 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)

« Ultima modifica: 23 Febbraio 2012, 12:47:53 da fsurfing »

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Errore in FMain
« Risposta #8 il: 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'è?

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.272
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Errore in FMain
« Risposta #9 il: 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.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #10 il: 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

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Errore in FMain
« Risposta #11 il: 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.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #12 il: 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 :)
« Ultima modifica: 24 Febbraio 2012, 12:25:13 da fsurfing »

Offline nello79

  • Gamberetto
  • *
  • Post: 35
    • Mostra profilo
Re: Errore in FMain
« Risposta #13 il: 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..

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Errore in FMain
« Risposta #14 il: 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