Autore Topic: [Risolto] che strano..Type mismatch: wanted Integer got Null instead  (Letto 1182 volte)

Offline biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Non capisco.. devo estrarre da una stringa una parte (numero) e convertirla in valore numerico.
Son bloccato da due ore:
Codice: [Seleziona]
Dim aa As String[]
Dim escludi As String
Dim esclusivo As Integer
Dim Sline as String

' per esempio  Sline = "14.6504 31.8927 14.3198 153 155 152"

  
     a = Replace(Sline, "\n", " ")
     aa = Split(a, " ", "", True)
     escludi = aa[1]
     esclusivo = Val(escludi)
                             |Type mismatch: wanted Integer got Null instead in FMain:295|
' mi servirebbe estrarre 31.8927 e farci un calcolo
E' impossibile o sbaglio qualcosa? esiste un altro sistema per estrarre i primi due numeri?
Grazie a chi mi aiuterà.. ;)
« Ultima modifica: 08 Agosto 2014, 18:12:59 da biggsman »

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #1 il: 29 Luglio 2014, 12:13:19 »
La funzione Val(stringa") utilizza la localizzazione, quindi 31.897 non viene convertita, mentre 31,897 viene convertita.
Se ti serve convertire in Intero la stringa
Codice: [Seleziona]
CInt(CFloat(escludi))
se invece ti serve anche la parte decimale:
Codice: [Seleziona]
CFloat(escludi)
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #2 il: 29 Luglio 2014, 13:53:11 »
La funzione Val(stringa") utilizza la localizzazione

Questa è una precisazione molto importante.

Infatti  "da noi"  questa funzione
Codice: gambas [Seleziona]
 Print IsFloat("1.1")

restituisce "falso", mentre quest'altra funzione
Codice: gambas [Seleziona]
 Print IsFloat("1,1")

restituisce "vero".
« 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 biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #3 il: 29 Luglio 2014, 16:12:17 »
Infatti!
ho aggiunto:
 a = Replace(Sline, ".", ",")
e adesso va un po' meglio..
Comunque pensavo fosse più facile...

Ho messo vicino un po' di pezzi e costruito un piccolo scanner Laser che utilizza Makerscanner (A. Barry)
con aggiunta di piatto rotante (72° x 5 scansioni) che mi produce un file poincloud.ply (file di testo)
Codice: [Seleziona]
ply
format ascii 1.0
element vertex 115680
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header
4.06852 32 0.78793 165 167 164
4.06852 32 0.731629 164 166 163
4.01647 32 0.675333 163 165 162
4.06852 32 0.61904 162 164 161
4.01647 32 0.562752 162 164 161
Tolta l' intestazione dovrei prendere i primi due numeri, convertirli in valori numerici, fare una piccola operazione matematica per traslare, una trigonometrica per ruotare e
alla fine aprendo i file in meshlab dovrebbero essere già allineate..
Facile no?  :o
No non riesco.. errori, zeri che mancano etc

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #4 il: 29 Luglio 2014, 16:33:01 »

Codice: [Seleziona]
ply
format ascii 1.0
element vertex 115680
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header
4.06852 32 0.78793 165 167 164
4.06852 32 0.731629 164 166 163
4.01647 32 0.675333 163 165 162
4.06852 32 0.61904 162 164 161
4.01647 32 0.562752 162 164 161
Tolta l' intestazione dovrei prendere i primi due numeri, convertirli in valori numerici, fare una piccola operazione matematica per traslare, una trigonometrica per ruotare e
alla fine aprendo i file in meshlab dovrebbero essere già allineate..
Facile no?  :o
No non riesco.. errori, zeri che mancano etc
Per primi due numeri cosa intendi? (4.06852 32 ) o altro.
Errori...quali?
Zeri che mancano...dove?
etc...cosa?
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #5 il: 29 Luglio 2014, 16:34:05 »
esempio
questa:
Codice: [Seleziona]
 Sline = Str$(newpointx) & " " & Str$(newpointx) & " " & Resto
mi da:
-0,06420395219202 -0,06420395219202 0,1 128 128 128

Mentre:
Codice: [Seleziona]
 NewpointStX = Format(newpointx, "-##.#####")
 Sline = Str$(newpointStX) & " " & Str$(newpointx) & " " & Resto
mi da:
-  ,0642 -0,06420395219202 0,1 128 128 128
e Meshlab non carica..

Offline biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #6 il: 29 Luglio 2014, 16:35:52 »
Grazie Vuott e Sotema..
Gli erroi sono type mismatch di solito

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #7 il: 29 Luglio 2014, 16:38:00 »
Per primi due numeri cosa intendi? (4.06852 32 ) o altro.
Errori...quali?
Zeri che mancano...dove?
etc...cosa?


     
« 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #8 il: 29 Luglio 2014, 16:42:54 »
esempio
questa:
Codice: [Seleziona]
 Sline = Str$(newpointx) & " " & Str$(newpointx) & " " & Resto
mi da:
-0,06420395219202 -0,06420395219202 0,1 128 128 128

Mentre:
Codice: [Seleziona]
 NewpointStX = Format(newpointx, "-##.#####")
 Sline = Str$(newpointStX) & " " & Str$(newpointx) & " " & Resto
mi da:
-  ,0642 -0,06420395219202 0,1 128 128 128
e Meshlab non carica..

;D ...ma a noi che ci può significare ?   :rotfl:
Voglio dire: quale risultato tu ti aspetti ?
Perché lo ritieni un errore ?
Inoltre, quale è il valore di newpointStX ?   :'(
« 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 biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #9 il: 29 Luglio 2014, 16:45:39 »
Ho provato anche con la danza...
Rien!

Codice: [Seleziona]
Public Sub Button11_Click()

   Dim alpha As Integer       'angolo
   Dim pointx As Float      'x point da spostare
   Dim pointy As Float     'y point da spostare
   Dim pointz As Float     'z point da spostare
   Dim Newpointx As Float
   Dim Newpointy As Float
   Dim Sinalpha As Float
   Dim Cosalpha As Float
  
   Dim NewpointStX As String
   Dim NewpointStY As String
  
   Dim X As Integer
   Dim Y As Integer
  
Dim i As Integer
Dim HFile As File
Dim Sline As String
Dim intestazione As String
Dim testo As String
Dim trap As Integer
Dim a As String
Dim aa As String[]
Dim j As Byte
Dim esclusivo As Integer
Dim escludi As String
Dim Resto As String

alpha = 72
HFile = Open "/home/io/Scrivania/cloud_new.ply" For Input

While Not Eof(hFile)


  Line Input #hFile, Sline
  
    trap = trap + 1
    If Trap < 13 Then Goto loop1
  
     a = Replace(Sline, "\n", " ")
     a = Replace(Sline, ".", ",")
     aa = Split(a, " ", "", True)

       escludi = aa[1]
       esclusivo = Val(escludi)
      
    
       If esclusivo > 20 Then 'Goto loop1
       SLine = ""
       Else
         '''''''''''''''''''''''''''''''''''''''''''''''
  
  pointx = Val(aa[0])
  pointy = Val(aa[1])
  
  X = InStr(Sline, " ") 'trovo il primo separatore
  Y = InStr(Sline, " ", X + 1) ' il secondo..
  
Resto = Mid$(Sline, (y + 1))
Resto = Replace(resto, ".", ",")

Sinalpha = Sin(alpha * (Pi / 180))
Cosalpha = Cos(alpha * (Pi / 180))

' qui ci andrà la traslazione

newpointx = (pointx * Cosalpha) - (pointy * Sinalpha)
newpointy = (pointx * Sinalpha) + (pointy * Cosalpha)
  

 NewpointStX = Format(newpointx, "-##.#####")
 Sline = Str$(newpointStX) & " " & Str$(newpointx) & " " & Resto
        
       Testo = Testo & Sline & gb.NewLine
       i = i + 1
  
   End If
 loop1:  
    
Wend
intestazione = "ply\nformat ascii 1.0\nelement vertex " & Str$(i - 6000)
intestazione = intestazione & "\nproperty float x\nproperty float y\nproperty float z\nproperty uchar diffuse_red\nproperty uchar diffuse_green\nproperty uchar diffuse_blue\nelement face 0\nproperty list uchar int vertex_indices\nend_header\n"
TextArea1.Text = intestazione & Testo
File.Save("/home/io/Scrivania/cloud_rot.ply", TextArea1.text)

End


Offline biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #10 il: 29 Luglio 2014, 16:49:28 »
Ok  ;D
come si conviene prima si dichiarano le variabili:
Ho cinquanta anni e la testa non funziona come a venti..
forse ho preteso troppo da me...(out of bounds)
 :-[

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #11 il: 29 Luglio 2014, 16:59:48 »
Ho copiato questo codice
Codice: [Seleziona]
ply
format ascii 1.0
element vertex 115680
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header
4.06852 32 0.78793 165 167 164
4.06852 32 0.731629 164 166 163
4.01647 32 0.675333 163 165 162
4.06852 32 0.61904 162 164 161
4.01647 32 0.562752 162 164 161
in un file che ho richiamato con il codice che hai inserito prima, ed ho ottenuto questo:  :-\

ply
format ascii 1.0
element vertex -6000
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header


     ???
« 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 biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #12 il: 29 Luglio 2014, 17:09:42 »
Il file cloud_new.ply è una semplice griglia di punti e contiene:

devo sistemare il contatore di righe pochè   element vertex  deve essere 99

Codice: [Seleziona]
ply
format ascii 1.0
element vertex 99
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header
0,1 0,1 0,1 128 128 128
0,1 0,1 0,1 128 128 128
0,1 0,1 0,2 128 128 128
0,1 0,1 0,3 128 128 128
0,1 0,1 0,4 128 128 128
0,1 0,1 0,5 128 128 128
0,1 0,1 0,6 128 128 128
0,1 0,1 0,7 128 128 128
0,1 0,1 0,8 128 128 128
0,1 0,1 0,9 128 128 128
0,1 0,1 1 128 128 128
0,1 0,1 0,1 128 128 128
0,1 0,1 0,1 128 128 128
0,1 0,1 0,2 128 128 128
0,1 0,1 0,3 128 128 128
0,1 0,1 0,4 128 128 128
0,1 0,1 0,5 128 128 128
0,1 0,1 0,6 128 128 128
0,1 0,1 0,7 128 128 128
0,1 0,1 0,8 128 128 128
0,1 0,1 0,9 128 128 128
0,1 0,1 1 128 128 128
0,2 0,1 0,1 128 128 128
0,2 0,1 0,1 128 128 128
0,2 0,1 0,2 128 128 128
0,2 0,1 0,3 128 128 128
0,2 0,1 0,4 128 128 128
0,2 0,1 0,5 128 128 128
0,2 0,1 0,6 128 128 128
0,2 0,1 0,7 128 128 128
0,2 0,1 0,8 128 128 128
0,2 0,1 0,9 128 128 128
0,2 0,1 1 128 128 128
0,3 0,1 0,1 128 128 128
0,3 0,1 0,1 128 128 128
0,3 0,1 0,2 128 128 128
0,3 0,1 0,3 128 128 128
0,3 0,1 0,4 128 128 128
0,3 0,1 0,5 128 128 128
0,3 0,1 0,6 128 128 128
0,3 0,1 0,7 128 128 128
0,3 0,1 0,8 128 128 128
0,3 0,1 0,9 128 128 128
0,3 0,1 1 128 128 128
0,4 0,1 0,1 128 128 128
0,4 0,1 0,1 128 128 128
0,4 0,1 0,2 128 128 128
0,4 0,1 0,3 128 128 128
0,4 0,1 0,4 128 128 128
0,4 0,1 0,5 128 128 128
0,4 0,1 0,6 128 128 128
0,4 0,1 0,7 128 128 128
0,4 0,1 0,8 128 128 128
0,4 0,1 0,9 128 128 128
0,4 0,1 1 128 128 128
0,5 0,1 0,1 128 128 128
0,5 0,1 0,1 128 128 128
0,5 0,1 0,2 128 128 128
0,5 0,1 0,3 128 128 128
0,5 0,1 0,4 128 128 128
0,5 0,1 0,5 128 128 128
0,5 0,1 0,6 128 128 128
0,5 0,1 0,7 128 128 128
0,5 0,1 0,8 128 128 128
0,5 0,1 0,9 128 128 128
0,5 0,1 1 128 128 128
0,6 0,1 0,1 128 128 128
0,6 0,1 0,1 128 128 128
0,6 0,1 0,2 128 128 128
0,6 0,1 0,3 128 128 128
0,6 0,1 0,4 128 128 128
0,6 0,1 0,5 128 128 128
0,6 0,1 0,6 128 128 128
0,6 0,1 0,7 128 128 128
0,6 0,1 0,8 128 128 128
0,6 0,1 0,9 128 128 128
0,6 0,1 1 128 128 128
0,7 0,1 0,1 128 128 128
0,7 0,1 0,1 128 128 128
0,7 0,1 0,2 128 128 128
0,7 0,1 0,3 128 128 128
0,7 0,1 0,4 128 128 128
0,7 0,1 0,5 128 128 128
0,7 0,1 0,6 128 128 128
0,7 0,1 0,7 128 128 128
0,7 0,1 0,8 128 128 128
0,7 0,1 0,9 128 128 128
0,7 0,1 1 128 128 128
0,8 0,1 0,1 128 128 128
0,8 0,1 0,1 128 128 128
0,8 0,1 0,2 128 128 128
0,8 0,1 0,3 128 128 128
0,8 0,1 0,4 128 128 128
0,8 0,1 0,5 128 128 128
0,8 0,1 0,6 128 128 128
0,8 0,1 0,7 128 128 128
0,8 0,1 0,8 128 128 128
0,8 0,1 0,9 128 128 128
0,8 0,1 1 128 128 128
0,9 0,1 0,1 128 128 128
0,9 0,1 0,1 128 128 128
0,9 0,1 0,2 128 128 128
0,9 0,1 0,3 128 128 128
0,9 0,1 0,4 128 128 128
0,9 0,1 0,5 128 128 128
0,9 0,1 0,6 128 128 128
0,9 0,1 0,7 128 128 128
0,9 0,1 0,8 128 128 128
0,9 0,1 0,9 128 128 128
0,9 0,1 1 128 128 128
1 0,1 0,1 128 128 128
1 0,1 0,1 128 128 128
1 0,1 0,2 128 128 128
1 0,1 0,3 128 128 128
1 0,1 0,4 128 128 128
1 0,1 0,5 128 128 128
1 0,1 0,6 128 128 128
1 0,1 0,7 128 128 128
1 0,1 0,8 128 128 128
1 0,1 0,9 128 128 128
1 0,1 1 128 128 128
e questo meshlab lo apre..

Offline biggsman

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #13 il: 29 Luglio 2014, 17:14:16 »
 :)

ecco, con questa modifica adesso funziona..

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: che strano..Type mismatch: wanted Integer got Null instead
« Risposta #14 il: 29 Luglio 2014, 17:15:41 »
Ora ho usato tutto quel codice, ed ho ottenuto questo:

Codice: [Seleziona]
ply
format ascii 1.0
element vertex -5879
property float x
property float y
property float z
property uchar diffuse_red
property uchar diffuse_green
property uchar diffuse_blue
element face 0
property list uchar int vertex_indices
end_header
-  ,0642 -0,06420395219202 0,1 128 128 128
-  ,0642 -0,06420395219202 0,1 128 128 128
-  ,0642 -0,06420395219202 0,2 128 128 128
-  ,0642 -0,06420395219202 0,3 128 128 128
-  ,0642 -0,06420395219202 0,4 128 128 128
-  ,0642 -0,06420395219202 0,5 128 128 128
-  ,0642 -0,06420395219202 0,6 128 128 128
- etc... etc... etc
il problema dov'è ? In quel secondo valore negativo ?
« 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. »