io in elettricad ero riuscito a risolvere abbastanza bene il problema , peccato che però la versione di gambas con cui è programmato lo renda incompatibile con l' attuale e quindi non si riesce a capire bene come funzionainfatti ho provato a vedere come avevi fatto ma non riesco a farlo andare.
Public Sub calc()
Dim coord As New Float[] ' contenitore di coordinate: x = pari , y = dispari
Dim Nx As Integer
Dim mx As Float
Dim my As Float
Dim puntomousex As Float = 18 ' punto x del mouse
Dim puntomousey As Float = 12 ' punto y del mouse
Dim distminore As Float = 5
Dim puntotrovato As Integer
' carico delle coordinate per provare
coord.Add(10)
coord.Add(0)
coord.Add(10)
coord.Add(10)
coord.Add(20)
coord.Add(10)
coord.Add(20)
coord.Add(0)
coord.Add(20)
coord.Add(10)
coord.Add(30)
coord.Add(10)
For Nx = 0 To coord.Max
mx = coord[Nx]
Nx += 1
my = coord[Nx]
If Sqr(((puntomousex - mx) ^ 2) + ((puntomousey - my) ^ 2)) < distminore Then
puntotrovato = Nx - 1
Endif
Next
Message(coord[puntotrovato] & "," & coord[puntotrovato + 1], "ok")
End
Un dubbio!
Mettere i dati in un'array penso non vada bene, non so quanto può contenere un'array, ci potrebbero essere centinaia e centinaia di punti in un disegno.
Che contenitore mi consigli di usare per rendere la lettura e scrittura veloce?
Perfetto, ho fatto una prova e si può caricare tutto quello che si vuole ;)
con 10.000.000 di elementi il mio pc ci mette circa 7-8 secondi, più che sufficente, con 1.000 è praticamente instantaneo
Grazie :2birre: :2birre:
giusto per curiosità hai provato a vedere la memoria occupata dal tuo programma di prova con un array da 10.000.000 di punti?
Public Sub Button1_Click()
Dim coord As New Float[]
Dim Nx As Integer
For Nx = 0 To 10000000
coord.Add(12345)
Next
Message(coord[9999999], "ok")
Endma a me interessava verificare che effettivamente il consumo di ram del programma fosse quello che ci si aspettava..per quello chiedevo di controllare la memoria occupata
Questo è il risultato del monitor di sistema