Newsgroup: it.comp.lang.visual-basic
Titolo: overload

qualche tempo fa si era parlato di overload.
la mia domanda:
č possibile fare l'overload di operatori?
probabilmente si visto che il + si puň usare con le stringhe, con le
date, il < o il > sempre con le date ecc..
ma come ?
saluti Valerio


Nope, niente overload in VB.
Le date sono confrontate come fossero Single (o Double, non ricordo) e le
stringhe sono concatenate col + per retrocompatibilita'.
Ciaotutti,
*


ma non è sempre un overload?

 wrote in message

Ni, nel senso che e' cablato nell'IDE. E' stato scritto in C e schiantato a
forza nell'IDE, due cose che un programmatore VB non puo' fare :)
Ciaotutti,
*

Per overload si intende definizione multipla di routine. Questo significa
che
public function pippo(s as string)
e
public function pippo(i as integer)
sono differenti.
Ora l'overload non si può fare in Visual Basic 6.0 o versioni minori,
ma dalla Vb.Net 1.0 in su. Quindi per il momento devi aspettare di
comprarti la nuova versione di Vb.
Ora, potrei anche sbagliarmi, ma overload di operatori non è un concetto
informatico. Infatti tu non dici che + può avere un significato piuttosto
che
un altro.
E' semplicemente il tuo ambiente di sviluppo che capisce in che contesto
stai lavorando.
Questo significa che se fai 1 + 1 = 2, Vb come qualsiasi altro linguaggio
capisce che devi fare un'addizione, se invece fai "a" + "b" = "ab",
l'ambiente
capirà che stai utilizzando una clausula AND su valori di tipo stringa.
Non si chiama overload questo.
Ciao Andrea

no invece è overload anche questo infatti in c o c++ si puo fare l'overload
degli operatori su qualunque classe o tipo di dato definito dall'utente. per
quelle variabili che siamo abituati a vedere int o string le cose sembrano
semplici ma se ad esempio volessimo fare
type miotipo
    latitudine as long
    longitudine as long
end type
dim a as miotipo
dim b as miotipo
dim c as miotipo
a.latitudine = 30
a.longitudine = 40
b.latitudine = 10
b.longitudine = -30
c = a+b
secondo la logica !!!
? c.latitudine = 40
? c.longitudine = 10
pero con VB non si riesce
mentre in c fai l'overload dell'operatore + e cosi sommi (in questo caso) i
valori di latitudine e longitudine
in c si puo fare l'overload di qualunque operatore (/*-+<>...)
sempre esempio
if a < b then
    ...
end if
in VB non si puo in c si
ciao
L2K


 ha scritto nel messaggio
news:a2h665$10u589$1...@ID-61006.news.dfncis.de...

Ricordati che è pericoloso usare il + con le stringhe in VB.
Es.
Private Sub Form_Load()
    Dim A As Variant, B As Variant
    A = 1
    B = 2
    MsgBox A + B
End Sub
Cosa darà???? (3)
Se invece fai:
Private Sub Form_Load()
    Dim A As String, B As String
    A = 1
    B = 2
    MsgBox A + B
End Sub
Darà 12...
Usa sempre la & per le stringhe...
Ciao
--
Timothy Redaelli

 end if
Non capisco, ma deduco che il concetto sia sul fatto che vb non
riesca a sommare (nell'esempio) il contenuto delle due strutture.
Ciao Andrea

 riesca a sommare (nell'esempio) il contenuto delle due strutture.
l'overload degli operatori non è una cosa unica e non fattibile da altri
linguaggi (il risultato) ma favorisce la comprensione del codice e ti
risparmia la scrittura di parecchio codice
se vuoi ti mando esempi in C++ di overload degli operatori
Ciao
L2K

No no grazie :))
Ci tengo alla vita io :) Ehheheeh
Comunque sei stato molto chiaro e sicuramente mi hai fatto capire
ciò che prima ignoravo ... beh indiscutibilmente un bel vantaggio.
Chissà se 
vb.net
 ha anche l'overload degli operatori ... francamente
non ricordo di averlo letto nel post precedente, anche se stavo
valutando seriamente di passare a c#, che se non erro dovrebbe
avere l'interfaccia grafica di vb per intenderci (visto che ormai gli
oggetti e le classi sono comuni) e la potenza del c.
Ciao Andrea

da quello che mi risulta (e qui smentitemi), il c# avra il compilatore che
produrra codice uguale a 
VB.NET
 e quindi se si utilizza l'uno o l'altro sara
indifferente.Se vuoi passare a qualcosa di sicuro passa al C++ perņ č un
"bordello".... scordati di trarre vantaggio da ciņ che sai in VB
ciao
L2K


Scusa, passerei agli antipodi allora. Se è uscito il nuovo c# ... credo (e
spero)
che sia meglio del vecchio c++.
Altrimenti tutto sto bordello perchè diavolo lo starebbero facendo.
Giusto sabato mi è arrivata la comunicazione da parte di microsoft di
tenermi
stretto l'msdn library october 2001 perchè sarà l'ultimo compatibile con vs
6.0.
Ciao Andrea

è arrivata anche a me...
il c# non sostituisce e non vuole sostituire il c++ almeno nei prossimi
10/15 anni questo perche se no tutti programmerebbero con altri
compilatori... il c# è interpretato il c++ no. adesso... che microsoft abbia
voluto creare qualcosa che sostituisse java... è un altro discorso... ma che
cerchi di sostituire il c++ mi sembra onestamente troppo
ciao
L2K


insomma allora non si puo fare in VB?
io fino ad ora per usare gli operatori in modo adatto al contesto ho dovuto
usare metodi
ma avrei preferito usare gli operatori veri, cosě da poter utilizzare funzioni
generiche con qualsiasi tipo.
una parentesi a proposito del msgbox.
come fa ad essere sia funzione che procedura?
cioč come mai lo posso usare come
msgbox "ciao"
ma anche
risposta=msgbox ("ciao")
sembra una funzione overloaddata in c++ no?
č possibile fare qualcosa del genere con le mie funzioni o come ha detto
*Alessandro* non c'č niente da fare?


Secondo me aritoppa in pieno... Cmq, contenti loro...
Ciaotutti,
*.dove-sta-quel-cd-con-delphi-personal-che-cerco-da-stamattina?????


In pratica di MsgBox ignori il valore di ritorno se non ti serve, non
c'entra con l'overloading.
Ciaotutti,
*

 *Alessandro* non c'č niente da fare?
Per quanto riguarda le funzioni non devi fare nulla di particolare per
ottenere quanto detto sopra, per l'overload "vero" delle funzioni aspetta
VB.NET
, per l'overload degli degli operatori, non c'e' niente da fare
(perlomeno fino alla beta 2 di VB.NET...)
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 *.dove-sta-quel-cd-con-delphi-personal-che-cerco-da-stamattina?????
riciao
L2k

 la potenza del c.
Il confronto C - 
VB.NET
 è improponibile perché il C è un linguaggio
di livello molto più basso del VB.
Ciao.
--
BSD is for UNIX-lovers -- linux is for Windows-haters.

 meglio del vecchio c++.
Il C++ non è vecchio, se pensi che la sua prima (ed unica fino ad
ora) standardizzazione risale al '98. Comunque il C# non vuole
essere un antagonista/sostituto del C++ bensì di ASP e Java.



io volevo farmi un programmino che mette in un database il contenuto del cd
automaticamente leggendo il cd ma oggi fai questo domani quello e ancora non
l'ho fatto, e anch'io navigo in una miriade di cd senza sapere (per la
maggiorparte) cosa contengono
non è che già esiste sto programmino?

advanced disk catalog...
non mi ricordo il sito ma l'ho acquistato e funziona "da dio" (e non solo da
lui :) )
costo 20$ o euro
adesso sui cd ho scritto solo "backup1 18-01-01" e cosi via e poi se cerco
qualcosa tramite adc so dov'e'!!!
inoltre "scanna" anche i file compressi (zip, arj, ace, rar e altri) e la
ricerca la fa anche all'interno di quest'ultimi
ciao
L2K



Era un cd "ufficiale", stava in una qualche rivista che ora nbessuno sa dove
sia finita...
Ciaotutti,
*


C# e' Java con un altro nome e Java non sostituira' mai in toto il C++,
cosi' come il C++ non sostituira' in toto suo "papa'" C e nessuno dei due
sostituira' in toto l'ASM.
Certamente il numero di applicazioni di un C puro si ridurra' sempre piu' a
favore del C++, il cui numero di applicazioni si ridurra' sempre piu' a
favoredel C# e linguaggi analoghi, cmq restera' sempre una consistente fetta
di mercato per programmi scritti in un linguaggio che non puo' morire
overnight (contrariamente a C# o VB).
Ciaotutti,
*