Newsgroup: it.comp.lang.visual-basic
Titolo: Optional ByVal c'è oppure no?

 In una funzione dove il secondo valore č Optional:
Function BellaVita(Byval Anni as Long,Optional Byval QuantiEuro as Currency)
che codice occorre scrivere,come si fa a stabilire se il secondo valore č
stato inserito oppure no?
La funzione dovrebbe fare due cose diverse a seconda della presenza o meno
del valore dato come Optional
Grazie
--
Gulp ! Forse mi sono perso qualcosa !

 valore è stato inserito oppure no?
quella che sapevo io era di dichiarare la variabile come variant, e
successivamente testarla con la funzione IsMissing.
una possibile alternativa è quella di fornirla di un valore di default "assurdo"
e quindi verificare se il parametro ha proprio quel valore.
--
Salutoni
Sergio

 valore č stato inserito oppure no?
Puoi saperlo solo per parametri Variant, usando
IsMissing(NomeParametroVariant)
Se vuoi usare parametri non variant, ti devi basare  sul valore di default:
Function Prova(Optional ByVal iValorePositivo as integer = -1) as boolean
    if iValorePositivo=-1 then
        Prova=false
   Else
        Prova=true
   Endif
End function
Ciao
*Roby*

 stato inserito oppure no?
Se utilizzi come tipo di parametro Variant, puoi usare la funzione
IsMissing, se invece, come in questo caso, utilizzi un tipo piu' diretto,
puoi:
- Riferirti semplicemente al default del tipo; i parametri non passati di
tipo numerico assumono 0, di tipo stringa assumono stringa vuota, oggetto =
nothing ecc..
- Impostare tu stesso un valore di default nella dichiarazione di funzione,
per es:
Function BellaVita(ByVal Anni as Long,Optional ByVal QuantiEuro as Currency
= -1)
Con questo sistema risolvi i casi in cui lo zero, per esempio, sia per te un
valore significativo
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 la variabile come variant
E' la seconda volta che mi freghi sul tempo di pochi minuti.
Se fossimo nel Far West, sarebbe roba da sfida all'Ok Keyboard. :-)
Ciao
*Roby*

[Roberto Piazzolla] scrisse:
(cut)
sulle cose facili ci buttiamo tutti a pesce eh? :-)
č consolante, comunque, il fatto che abbiamo dato tutti la stessa risposta, piů
o meno....
--
Salutoni
Sergio

 sulle cose facili ci buttiamo tutti a pesce eh? :-)
Perche' come diceva Boris Spassky (ex campione del mondo di scacchi):
"... spengo il cervello e lascio giocare le mani"


ho letto tante volte la tua firma........
:-)))
ma guarda che la battuta giusta mi sa che è questa:
"Marty, non stai ragionando quadridimensionalmente"
c'ho preso oppure ho detto una bufala?!?!?!?!
:-))))
--
Damiani Liborio Igor
ig...@igordamiani.it
 - 
soft...@igordamiani.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

 valore.
Come si assegna un valore di default ?


 Gulp ! forse mi sono perso qualcosa !
evidentemente il post di luca... :-)
--
Salutoni
Sergio

> Come si assegna un valore di default ?
OK non avevo visto la risposta di Andrea
Grazie a entrambi.


 OK non avevo visto la risposta di Andrea
??? who is "andrea" ???
--
Salutoni
Sergio

 Grazie a entrambi.
GULP ho scritto Andrea anzichč Roberto.
Scusami Roberto e grazie.
Grazie anche a Luca.


 ??? who is "andrea" ???
Forse una variabile.
Ciao CSSoft  e grazie


 c'ho preso oppure ho detto una bufala?!?!?!?!
E' probabile... a suo tempo, prima di inserirla, feci accurata ricerca su
internet per cercare la citazione giusta(!) e a quanto ricordo trovai
questa; nel frattempo mi sono procurato la trilogia in DVD e... ammetto di
non aver verificato ;-)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando .... beh, ci siamo capiti!"
Dr. Emmett L. Brown

 DVD e... ammetto di non aver verificato ;-)
ok, però adesso verifichi. :-)
per favore con testo a fronte: battuta in lingua originale e sua traduzione nel
doppiaggio.
--
Salutoni
Sergio

io a natale mi sono fatto regalare la trilogia....e me la sono gustata per
bene 3 giorni di fila.....
oggi pomeriggio, se ho tempo, digitalizzo dal DVD.....
ma quand'è che dice 'sta battuta nel film? la dice più di una volta.....mi
pare.....
io mi ricordo solo nel 3° episodio, quando marty sta per andare nell'1885,
che ha paura di andare a sbattere contro gli indiani.....
vi ricordate?
:-))))))


 nell'1885, che ha paura di andare a sbattere contro gli indiani.....
io me la ricordo nel primo episodio... mi pare quando il dottor brown spiega a
marty che deve fare in modo di far incontrare i suoi futuri genitori.
Comunque mi sa che ti tocca di rivedere tutta la trilogia.
Che dispiacere ;-)
--
Salutoni
Sergio

bene 3 giorni di fila.....
Grandi film, non saprei cosa scegliere fra i 3.
Che dispiacere pensare a Fox malato di alzaimer pero' :-(
Stefano "HappyMan" (Lago Maggiore - NO)
--
http://www.sgr.info
Email happyman69 (at) 
libero.it

 che ha paura di andare a sbattere contro gli indiani.....
Credo non venga mai detta nel 1° episodio, e forse nemmeno nel secondo...
nel 3° invece almeno due volte, nella seconda Marty risponde qualcosa tipo
"Gia', mi riesce difficile!"
Ok, stasera controllo... :-)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________


 vi ricordate?
Anch'io ricordo questa e sono andato a controllare;
Doc dice: "Marty, you're not thinking fourth dimensionally!"
(doppiato con "quadrimensionalmente").
-- 
Ciao, Mauro CB
I miei DVD: 
http://www.dvdprofiler.com/mycollection.asp?alias=calabrone

 :-))))))
non vorrei sbagliare ma lo dice quando ha paura di finire nel burrone a
causa del ponte non ancora finito nel 1885, verso la fine del film.
ciao bumulo

già, è vero......è un grosso dispiacere, perchè secondo me è un grande!!!!


cioč?!!?!? vorresti guardarti tutti e 3 i film alla ricerca di questa
battuta???
:-)))


già, allora se la battuta originale dice così, ritengo più giusto mettere
quadrimensionalmente
bravo, in ogni newsgroup c'è sempre lo "scienziato" che verifica!!!
:-)))


 :-)))
Cattivo! Sono andato a controllare qual era la frase esatta non se tu 
ricordavi male :-P


dai, sto scherzando......hai fatto bene!!!!!
non te la prendere, era solo una battuta......
:-))))


del valore dato come Optional
in realtà 
Optional Byval QuantiEuro as Currency
devi leggerlo
Optional Byval QuantiEuro as Currency = 0#,
Come ti hanno già risposto, se il parametro opzionale è Variant, puoi
usare l'operatore IsMissing(), altrimenti devi per forza testare il
valore di default.
Solo che il valore di default, come molti ti hanno già detto, può essere
un valore valido, quindi potrebbe non dirti se effettivamente quel
parametro sia stato omesso.
Se così fosse diciamo che sei costretto ad usare Variant:
ho detto "diciamo che sei costretto" perché anche se il tipo Variant
occupa più memoria e ti costringe ad un type casting, anche se implicito
(poiché presumo che all'interno della tua funzione usi variabili
tipizzare e non variant a manetta), è sicuramente meno dispendioso di un
ulteriore parametro Boolea. Soprattutto se gli Optional sono più
d'uno...
E poi, secondo me è un discorso di principi: se omettendolo un parametro
(non Variant) questo assume il suo valore di default, tanto valeva
specificarlo e rendere il codice più chiaro
E ancora, come recita la documentazione di MIDL (ma nelle versioni
recenti del compilatore, se non erro, non ti da più il warning), lui
vorrebbe che i parametri optional siano VARIANT, quindi tanto vale - se
definisci le interfacce in IDL - accontentarlo.
Ciao,
Moreno
-- 
sirri at morenosoft dot com
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
---------------------------------------------------------------------------