Newsgroup: it.comp.lang.visual-basic
Titolo: [OT] da VB6 a .NET... istruzione MID$

...l'istruzione MID non e' piu' riconosciuta in .NET, MID$ invece si...
cos'e', un ritorno al passato?
PaoloS


che poi tanto OT non e'...

 PaoloS
Non è piu supportata perchè .net non gestisce più i variant, che era tipo di
variabile restituito dal mid.
Il mid$ è riconosciuto, suppongo, per la retrocompatibilità, ma non dovrebbe
essere utilizzato, in quanto l'oggetto string di .net possiede il metodo
.substring (ed altri)
Salutoni
Sergio
P.S.: hai ragione, non è affatto ot

cos'e', un ritorno al passato?
No, e' un modo per far sentire a loro agio gli sviluppatori VB e far
funzionare lo wizard di conversione dei progetti da vb4/5/6 a 
vb.net
.
Personalmente ritengo sconsigliabile l'uso di questa funzione perche'
passa attraverso Microsoft.VisualBasic.CompilerServices.Utils prima
di chiamare String::Substring.
Di fatto conviene usare i metodi della classe String.
-- 
ciao, hal

 cos'e', un ritorno al passato?
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
-----
Funzioni stringa
----------------
Chr$(MyAscii)
|
+-- DirectCast(MyAscii, Char)
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, ...)
Nota: ove possibile considerate l'uso di DirectCast().
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 ...
|---
MyString = MyString & MyNumber
|
+-- MyString = MyString & MyNumber.ToString()
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

di Visual Basic.
Diciamo che l'hai presa piuttosto alla larga ;-)
Magari 318 righe di risposta multi-uso si sarebbero potute 
risparmiare ;-)
-- 
ciao da un hal a banda "stretta"

 risparmiare ;-)
Era un po' che non lo postavo... ho colto l'occasione :)
Ciao

 ho colto l'occasione :)
Lo spirito e' quello giusto: soprattutto con le donne :-PPP
-- 
ciao, un hal scivolato ormai nell' OT