Newsgroup: it.comp.lang.visual-basic
Titolo: Due domande secche

Ho un paio di problemi:
1) Devo assegnare il valore a una variabile "tempo" e mi succede cosě:
      *   tempo=100000         TUTTO OK
      *   tempo=10000*10     OVERFLOW !
      *   tempo=10000*hscroll1.value   OVERFLOW !  (con hscroll1.value=10)
Perchč nel primo caso funziona e negli altri due no?
2) Esiste un modo per usare il controllo timer nel modo in cui si usa il
delay nel pascal? Devo temporizzare un ciclo for.

delay nel pascal? Devo temporizzare un ciclo for.
L'API Sleep (la definizione la trovi nel visualizzatore API)
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

 Perchè nel primo caso funziona e negli altri due no?
Questo me l'avevano spiegato tempo fa, quando ho avuto lo stesso tuo
problema, non faccio altro che riscriverlo, sperando di ricordare giusto.
Alloa, vb fa i calcoli utilizzando variabili temporanee in base ai valori
che tu gli dai per il calcolo, cioè se tu per il calcolo gli dai 10.000 e
10,
che sono due valori integer, lui farà il calcolo in una variabile integer,
andando poi in overflow, perchè il risultato va oltre il limite, che è
circa di 32.000. Allora, per risolvere, devi far capire a vb che deve
fare i calcoli in un long e per farlo devi convertire a long uno dei 2
valori dell'operazione. Es:
 tempo=10000 * Clng(hscroll1.value)
Così dovrebbe andare... Spero di essere stato chiaro...
Per la seconda domanda fai riferimento alla risposta di Moreno.
ciao
---------------------------------------------------------
             ASSA
http://assatarram.yohoo.it
Bookmark download:
http://www.redangel.it/beta_zone/Click_p.asp?ID_P=19
Napster: Assatarram3
---------------------------------------------------------

 delay nel pascal? Devo temporizzare un ciclo for.
endwait = timer + 1
do
    doevents
loop until endtime < timer
1 è il numero di secondi
endwait è una variabile
il doevents serve per non impiantare il pc durante il wait (cosa invece che
l'api sleep fa), infatti il comando doevents lascia fare al sitema operativo
le altre operazione (multi-tasking)
ciao
Bald0z

 Perchč nel primo caso funziona e negli altri due no?
LA variabile come l'hai dichiarata? (long ?, double?, integer? ecc...)

 le altre operazione (multi-tasking)
[snip]
are you really sure? but really really sure? ;))
la funzione Sleep() sospende l'esecuzione del thread per l'intervallo di
tempo specificato; quindi significa che l'intera applicazione VB si
"addormenta" per il tempo specificato;
con DoEvents() VB contina ad elaborare eventuali altri messaggi (e quindi
eventi) presenti nella coda di messaggi del thread corrente;
quindi, per riprendere la tua definizione
il DoEvents serve per non bloccare (impiantare? bleah!) l'applicazione VB
infatti la funzione DoEvents non sospende l'applicazione VB che continua ad
elaborare gli eventuali eventi generati;
la differenza è sostanziale, e per trattare di tutti i vari side effects
delle due soluzioni ci sarebbe da spendere un minimo di "inchiostro";
ciao


Meglio ancora:
 tempo=10000& * hscroll1.value
Dichiari subito che 10000 è un long, lavori sulle costanti che sono più
veloci delle variabili (non hanno reindirizzamento) e eviti una chiamata a
una funzione.
Ciao