Newsgroup: it.comp.lang.visual-basic
Titolo: COME SI OTTIENE IL MINIMO?

Dim vett(4) As Integer
vett(1) = a
vett(2) = b
vett(3) = c
vett(4) = d
Min = vett(1)
For i = 1 To 4
    If vett(i) < Min Then Min = vett(i)
Next i
MsgBox Min
Ciao e Buone Feste,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)

c, d?
in preda ad allucinazioni post abbuffate natalizie ...
minimo = iif(iif(a<b,a,b) < iif(c<d,c,d),iif(a<b,a,b),iif(c<d,c,d)))
(forse funziona)
Pa...@citynet.re.it
 (togliere una k dall'indirizzo)

via Mailgate.ORG Server - 
http://www.mailgate.org

numero indeterminato di valori da confrontare:
Io eviterei questa soluzione per una pura questione di stile:
ParamArray è un array di Variant: un variant occupa 16 (SEDICI!) bytes +
quelly della variabile contenuta nel variant, un array poi ne occupa altri
20 di header.
Per non parlare della lentezza esasperante dei variant, e di tutti i
problemi e bug che il loro utilizzo può comportare.
Per il resto la funzione è corretta.
Consiglio a chi ha fatto la domanda di cercarsi qualche fonte dove vengono
descritte le tecniche base della programmazione, poichè questo problema era
veramente di semplice soluzione e lo si poteva risolvere con un minimo di
intuizione.
Ciao.

E come fai a trattare ogni tipo di dato (dal Byte alla String passando per
il Date) se non usi i Variant?
Che io sappia, solo con i linguaggi late binding  riesci a scrivere un
metodo cosi' astratto una sola volta.
Non conosco C++, ma dubito che ci riesca.
Qual e' la soluzione semplice e intuitiva a cui ti riferisci?
Enrico


il Date) se non usi i Variant?
Ovviamente i variant rende tutto più semplice e risolve tutti i problemi di
conversione, ma è un metodo di programmazione errato.
Occorre farsi delle funzioni ad oc per ogni tipo di dato che ti serve.
In realtà il tutto si riduce a 2 / 3 tipi: numerici (interi e a virgola
mobile) e stringhe.
Per i numerici puoi usare i Double, che vanno bene anche per gli interi, e i
Date, anche se ci perdi in prestazioni.
Se cerchi limpidità del codice e prestazioni i variant sono da evitare come
la peste.
Ad esempio, per le stringhe è più veloce il confronto StrComp(A$, B$, 0)=0
che A$ = B$.
Cosa che differisce con dati numerici.
Volendo guardare con i variant puoi anche confrontare 1 = "1" e VB ti
direbbe Vero, ma è un confronto erroneo, che spesso può portare a bugs,
senza contare che così VB deve:
1) Convertive il variant 1 nel suo tipo appropriato
2) Convertive il variant "1" nel suo tipo appropriato
3) Convertive il variant 1 e "1" nello stesso tipo
4) Confrontare i due valori.
Con variabili tipizzate sarebbe stato necessario solo il punto 4 (3
conversioni risparmiate!)
Spero di averti convinto.
Ciao.

20 di header.
Bhe, bisogna vedere la frequenza e la mole d'uso.
Se non e' Time-Critical ed il vettore e' piccolo, la soluzione di Enrico la
trovo decisamente Ottima.
E poi.... 16 bytes in piu' o in meno.... ormai e' lontano il Vic20 e lo ZX
Spectrum, ed il Pentrium e' un'attimino piu' veloce dello Z80.   :-)
Saluti a tutti
Ciao
By -MES-   Maronese Ettore
http://ilmes.freeweb.org
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://members.xoom.com/it_lang_vb

Spectrum, ed il Pentrium e' un'attimino piu' veloce dello Z80.   :-)
E' vero, ormai 150.000 lire per comprarsi altri 64Mega ce li hanno tutti (ma
ricordati che il pc ha solo 4 slot), ma poi non lamentiamoci se Win95 è così
lento a caricare un prog., e se qualche volta va in crash...
P.s.: hai mai vista un'APE con un Variant? (Attento a non confondere Variant
con Any, è un tantino diverso, e comunque pericoloso: andrebbe fatto un
nuovo alias)


E' pero' stato implementato dai metodi dell'oggetto COM, che a conti fatti,
e' una DLL, vista sotto un'altro punto di vista (un po' piu' alto).
PS: Se avessi avuto la documentazione che M$ non da, gia ai tempi del 16Bit
(VB3) avrei fatto una DLL con una API che accettava un Variant. (Basta
chiamare le funzioni mal documentate della VBRUN300.DLL)
Salutoni



Dev'essere la stessa frase che hanno detto gli sviluppatori di Win95  >:-/
--
Roal Zanazzi
z...@iol.it

Se serve, il variant e' li per essere usato.
Ma se mi hai appena detto che Win95 č un'accozzaglia di schifezze... non
peggioriamo le cose...
Ciao.