Newsgroup: it.comp.lang.visual-basic
Titolo: [!5] VB -> VB.NET senza compatibilità

Questo è un post sperimentale che verrà aggiornato e postato "ogni tanto".
Invito tutti i partecipanti a rispondere a questo post suggerendo o
notificando altre soluzioni di conversione mancanti e/o correggendo le
presenti.
(Ringrazio i partecipanti di it.comp.lang.visual-basic per i loro
suggerimenti)
-----
Cos'è questo post
-----------------
Lo scopo di questo post è quello di indicare come scrivere applicazioni
VB.NET
 senza usare namespaces di retro-compatibilità con le vecchie versioni
di Visual Basic.
Dato per scontato che 
VB.NET
 è un linguaggio completamente differente dai
"vecchi" VisualBasic, è inutile se non dannoso utilizzarlo come se fosse una
sorta di VB7.
Cosa *NON* è questo post
------------------------
Questo post *non* vuole parlare delle nuove funzionalità di [VB].NET.
Quindi non si troveranno sintassi complete dei nuovi costrutti (per quelle
consultate la guida in linea!).
Qui saranno elencate solo le corrispondenze, il più univocamente possibile,
tra VB e 
VB.NET
 in modo da poter essere potenzialmente in grado di
convertire una "vecchia" applicazione VB nella nuova sintassi .NET.
Contenuti del post
------------------
- sfruttare le potenzialità del .NET framework nella sua forma più standard.
- evitare di usare funzioni in compatibilità, retaggio delle precedenti
versioni di VB.
- creare codice più facilmente portabile in altri linguaggi .NET e in altre
piattaforme.
* Premessa operativa
*-------------------
Selezionare il progetto e andare sul menu Progetto -> Proprietà.
Selezionare Proprietà Comuni -> Imports.
Selezionare e rimuovere Microsoft.VisualBasic.
Indice Argomenti Trattati
-------------------------
- Funzioni Stringa
- Funzioni Matematiche
- Funzioni Data-Ora
- Conversione di tipo
- Oggetti/Classi
- Gestion Errori
- Gestione Files
- Per i puristi    (nuovo)
-----
Funzioni stringa
----------------
Hex$(MyNumber)
|
+-- MyNumber.ToString("x")
InStr([...,] MyString, MySubString [,...])
|
+-- MyString.IndexOf(MySubString)                     ' binary compare
+-- MyString.ToLower().IndexOf(MySubString.ToLower()) ' text compare
Len(MyString)
|
+-- MyString.Length
Mid$(MyString,...)
|
+-- MyString.SubString(...)
+-- MyString.Chars(...)
StrComp(MyString1, MyString2 [,...])
|
+-- Text.Compare(MyString1, MyString2)         ' binary compare
+-- Text.Compare(MyString1, MyString2, True)   ' text compare
Funzioni Matematiche
--------------------
Le più comuni si ritrovano sotto il namespace "Math"
Randomize(), Rnd()
|
+-- New Random(...)
Val(MyString)
|
+--
| ' Localized separators
| Double.Parse(MyString)
+--
| ' USA separators
| Double.Parse(MyString, New Globalization.CultureInfo("en-US"))
+--
| ' allow HEX -> DEC
| Int64.Parse(MyString, Globalization.NumberStyles.AllowHexSpecifier)
+---
Funzioni Data-Ora
-----------------
Date()
|
+-- DateTime.Today()
DateSerial(MyYear, MyMonth, MyDay)
|
+-- New DateTime(MyYear, MyMonth, MyDay)
DateAdd(..., MyDate, ...)
|
+-- MyDate.Add(New TimeSpan(...))
+-- MyDate.AddDays(...)
DateDiff(..., MyDate, ...)
|
+-- MyDate.Subtract(...)
+-- MyDate.AddDays(-...)
Day(MyDate)
|
+-- MyDate.Day
Month(MyDate)
|
+-- MyDate.Month
Now()
|
+-- DateTime.Now()
Time()
|
+-- DateTime.Now.TimeOfDay
Year(MyDate)
|
+-- MyDate.Year
Conversione di tipo
-------------------
CBool(MyVar), CInt(MyVar), CStr(MyVar), C*(MyVar), ...
|
+-- Convert.To<NewType>(MyVar)
+-- Convert.ChangeType(MyVar, ...)
Oggetti/Classi
--------------
Collection
|
+-- HashTable
Gestion Errori
--------------
| On Error Goto Exception:
|     ' ...some code...
|     Exit Sub
| Exception:
|     ' ...error handling...
|---
|
+---
| Try
|     ' ...some code...
| Catch ex As Exception
|     ' ...error handling...
| End Try
|---
Err.Raise ...
|
+-- Throw New Exception(...)
Gestione files
--------------
Imports System.IO
| Dim MyFile As Long
| MyFile = FreeFile()
|---
|
+-- Dim MyFile As FileStream
Open MyFileName ... As MyFile
|
+-- MyFile = New File.Open(MyFileName, ...)
Interfaccia
-----------
MsgBox(MyText, MyCaption, MyMessageBoxButtons)
|
+-- MessageBox.Show(MyText, MyCaption, MyMessageBoxButtons)
-------------
Per i puristi
-------------
VB.NET
 inserisce riferimenti ai Microsoft.VisualBasic.* namespaces a
insaputa del programmatore nei seguenti casi (aumentando anche il codice IL
prodotto e i tempi di calcolo).
Comparazioni
------------
| Option Strict Off
| Dim o1 As Object
| Dim o2 As Object
| if (o1 = o2) Then ...
| if (o1 > o2) Then ...
|---
|
+---
| Option Strict On
| Dim o1 As Object
| Dim o2 As Object
| if (o1.Equals(o2)) Then ...
|
| ' nel caso o1 e o2 contengano stringhe
| if (Convert.ToString(o1).Equals(o2)) Then ...
|
| if (Convert.To<ContainedType>(o1).CompareTo(o2) > 0) Then ...
|---
| Option Strict On
| Dim s1 As String
| Dim s2 As Object
| if (s1 = s2) Then ...
| if (s1 > s2) Then ...
|---
|
+---
| Option Strict On
| Dim s1 As String
| Dim s2 As Object
| if (String.Equals(s1, s2)) Then ...
| if (String.Compare(s1, s2) > 0) Then ...
|---
--
using System.Gtk.Forms = "
http://www.neodatatype.net/windowsforms/sgf.aspx
"
mathParser = "
http://www.neodatatype.net
"
sitoComune = "
http://www.it-lang-vb.net
"

 presenti.
Permettimi di dirti che hai avuto una idea geniale ! Questo post e'
UTILISSIMO.
Il primo consiglio che mi viene in mente per ampliare la lista e' quello di
inseririe gli equivalenti in .NET per le utili costanti VBCrLf, VBTab
eccetera.
Ciao
--
Luca Mauri
Fondatore di news://free.it.comp.database.mysql

 eccetera.
Ok, dove le trovo?
Ciao


 eccetera.
Domenica ancora non lo sapevo, ma ieri finalmente ho scoperto le
corrispondenze all'indirizzo
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/
vbgrfvbaconstantchangesinvisualbasicnet.asp .
ciao
--
Luca Mauri
Fondatore di news://free.it.comp.database.mysql
Fondatore di news://free.it.software.personalfirewall

 vbgrfvbaconstantchangesinvisualbasicnet.asp .
http://makeashorterlink.com/?R52241BB2
Non ci siamo :)
I ControlChar sono un membro di "Visual Basic Language Reference", il che
significa che è un'aggiunta per compatibilità con VB6 e non un enumeratore
del framework.
Tutte le mie ricerche passate hanno dato esito negativo.
Ciao


 Tutte le mie ricerche passate hanno dato esito negativo.
Anche le mie purtroppo (e non sono state poche!), anche se a mio avviso ha
"poco senso" escludere il namespace Microsoft.VisualBasic lavorando con
VB.NET
. Tanto vale programmare con C#. IMHO.
Lokar.NET
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org