Archivi categoria: VB6-VBA

VB6 e Windows Vista

Mi è stato chiesto se alcune librerie di VB6 sono compatibili con Windows Vista.

Come mio promemoria e per chi dovesse avere la stessa necessità, pubblico il collegamento alla pagina che contiene l’elenco delle librerie compatibili e di quelle non compatibili:
http://msdn2.microsoft.com/en-us/vbrun/ms788708.aspx

[VB6-VB.NET] Add-in per l’interoperabilità dei form

Per chi non conoscesse l’add-in gratuito “Interop Forms Toolkit 2.0“, voglio sottolineare una sua caratteristica fondamentale: permette di estendere un progetto VB6, permettendo di utilizzare dei form di Visual Basic.NET direttamente da un’applicazione VB6.

Questo agevola sicuramente chi ha sviluppato un’applicazione “enorme” in VB6 e non si può permettere di perdere molto tempo nell’effettuare la migrazione dell’intero progetto sotto .NET. In questo modo viene garantita la produttività, almeno a breve termine, con una facile estensione del progetto iniziale con nuove funzionalità che VB.NET offre nativamente.

[VB6] Le funzionalità della ShellExecute

Alla pagina http://www.foxitaly.com/risorsetecniche/ShellApplication.htm è possibile trovare numerosissimi utilizzi di ShellExecute:

  • Windows Explorer in un certa directory
  • lanciare un eseguibile passando anche dei parametri
  • lanciare un file che ha un programma associato nel sistema operativo
  • aprire il programma predefinito di e-mail sul sistema
  • lanciare diverse componenti del Control Panel
  • aprire Internet Explorer con una certa pagine web
  • registrare una DLL, un ActiveX Control (.ocx file) o un OLE COM EXE
  • chiudere la sessione windows
  • sospendere il PC
  • lanciare diversi sottoprogrammi del sistema operativo
  • gestione delle finestre aperte in Windows
  • aprire un elemento del “Control Panel”
  • aprire la finestra “Date/Time Properties”.

[VB6] Code Advisor: uno strumento per la migrazione da VB6 a VB 2005

Premessa
Pur programmando da diversi anni con VB e con VBA (soprattutto con Access) riesco comunque a cogliere le opportunità che si prospettano con i nuovi linguaggi che implementano il paradigma della programmazione orientata agli oggetti (OOP). Nei miei studi universitari ho avuto anche a che fare con JAVA e quindi anche in questo caso con la programmazione ad oggetti (nota: C# ha una sintassi molto simile a quella di JAVA). Ho studiato, ho sperimentato e mi sono impegnato parecchio anche nelle mailing list nel cercare di capire questo nuovo modo di programmare.

Nonostante tutto l’interesse, tutta la passione e tutto l’impegno profuso per padroneggiare questo nuovo mondo, non sono ancora riuscito ad avere la “situazione in pugno”. Mi sento ancora come una vecchia locomotiva che non riesce ad andare in pressione e quindi ad iniziare il suo viaggio lungo i binari sicuri della programmazione ad oggetti.

A questo punto non resta che esplorare altre possibilità e cioè utilizzare degli strumenti che almeno mi permettano di capire quali sono le parti di codice che fanno parte del “passato” VB6 e che non hanno una corrispondenza diretta nel nuovo VB.NET.

VB6 Code Advisor: download e installazione
Prima di tutto è necessario scaricare dal sito Microsoft questo “add-in” per l’IDE di VB6. L’indirizzo esatto da cui è possibile scaricarlo è il seguente:

http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=a656371a-b5c0-4d40-b015-0caa02634fae

Una volta scaricato il file “Code Advisor for Visual Basic 6_ITA.msi” è possibile avviarlo per far partire l’installazione. Le prime opzioni potranno essere tutte confermate così come sono.

Appena comparirà la seguente schermata, invece, consiglio di scegliere l’opzione “Completa“, perché così installerete anche la documentazione e gli altri componenti necessari per estendere “Code Advisor“.

Infatti “Code Advisor” è un prodotto estendibile con nuove regole per avere ulteriori consigli sul codice che non erano previsti nella versione iniziale del prodotto. Alcune di queste nuove regole sono pubblicate anche su articoli MSDN.
Dopo un altro paio di click di conferma, avrete l’add-in installato. A questo punto facciamo partire VB6.

Nell’IDE di VB6 troviamo già un paio di differenze: nel menu “Aggiunte” c’è il nuovo menu “Code Advisor” e tra le barre strumenti ce ne sarà una nuova di nome “Code Advisor per Visual Basic 6“. Entrambe presentano alcune voci identiche e quindi siamo liberi di utilizzare l’una o l’altra modalità, a nostra preferenza.
Le voci sono:

  • Aggiungi FixIt
  • Rimuovi FixIt
  • Trova FixIt successivo
  • Filtra regole FixIt
  • Definizione ambito (con le scelte “Ambito: progetto attivo” oppure “Ambito: file attivo“)

Nel menu, poi, c’è anche la voce “Visualizza report FixIt” che però al momento è disattivata, non avendo ancora utilizzato le funzionalità di questo add-in.

Gettiamo carbone nella caldaia della locomotiva…
A questo punto apriamo un progetto VB6, uno qualsiasi, per fare una prima prova “al volo” delle funzionalità offerte dall’add-in.

Per iniziare l’analisi del nostro progetto, scegliamo la voce “Aggiungi FixIt“. Diventerà subito visibile una barra di avanzamento per farci capire a che punto è l’analisi del codice. Al termine dell’analisi, nel lato destro della barra degli strumenti di “Code Advisor” comparirà un pulsantino con l’unica funzione di indicarci quanti sono i “FixIt“, cioè i suggerimenti inseriti nel codice (nel mio caso sono stati 13, molti dei quali dello stesso tipo).

I suggerimenti (FixIt) sono inseriti come commenti nel codice, secondo il seguente schema:

  'FIXIT: questo è un suggerimento

Premendo il pulsante “Rimuovi FixIt“, tutti i suggerimenti saranno rimossi dal codice come se non fossero mai stati inseriti.

Il pulsante “Trova FixIt successivo” serve a spostarsi “in avanti”, da un suggerimento all’altro. Questa funzionalità permette di trovare subito i suggerimenti senza dover guardare tutto il codice.

Il pulsante “Filtri FixIt” svolge un’importante funzione: apre una finestra di dialogo dalla quale è possibile selezionare sia la versione VB.NET alla quale vogliamo migrare, sia i singoli suggerimenti, uno per uno, che vogliamo attivare o disattivare. Riporto qui di seguito un’immagine che può chiarire il concetto.

Il pulsante “Visualizza Report FixIt“, che è diventato attivo dopo l’aggiunta dei suggerimenti, apre il browser Internet per mostrare un report piuttosto dettagliato e contenente:

  • alcune statistiche del progetto (numero regole, numero componenti, numero problemi, ecc.);
  • tutti i “problemi” riscontrati, con il nome del modulo che contiene il codice, la relativa sezione e la riga dove si trova il “problema”;
  • l’elenco dei componenti che hanno riportato almeno un problema;
  • l’elenco delle regole applicate con il conteggio delle occorrenze di ognuna.

Il report si presenta in questa forma:

Il pulsante “Guida in linea di Code Advisor” apre appunto la guida in linea, mentre l’ultimo pulsante “Definizione ambito“, che può assimere due diversi valori (“Ambito: progetto attivo” oppure “Ambito: file attivo“) specifica appunto se le regole vanno applicate all’intero progetto o al solo file attivo. In quest’ultimo caso, i suggerimenti vengono applicati solo al file attivo e anche il “Report” viene prodotto solo sulla base dei risultati ottenuti dall’analisi del file attivo.

Una nota a margine: utilizzando questo add-in, improvvisamente mi è comparsa questa finestra di avviso di Norton AntiVirus:

IMMAGINE 4

Norton AntiVirus ha interpretato le azioni di questo script come quelle di uno “script maligno”. Ritenendo che non ci fossero particolari dubbi sul fatto che fosse il NAV ad aver avuto un “abbaglio”, ho scelto la voce “Autorizza questo script“, ho confermato e ho quindi potuto continuare il lavoro ;-)

Come ultima parte di questo articolo e ad esemplificazione dei suggerimenti che questo add-in produce, ne riporto uno auto-esplicativo:

  Utilizzare Option Explicit per impedire la creazione implicita di variabili di tipo Variant.

Conclusione
Non è tra gli obiettivi di questo articolo elencare e spiegare per filo e per segno tutti i “problemi” riscontrati nell’esperimento. L’obiettivo, infatti, era quello di fornire uno sprone all’uso di uno strumento che può aiutarci nel capire meglio come migliorare il nostro codice e i nostri progetti per prepararli adeguatamente nell’ottica di una migrazione a VB.NET / VB 2005.

#1 Convertire un orario (hh.mm.ss) in un numero di tipo Double

(Tip per VB6):

Talvolta occorre convertire un orario espresso nel formato “hh:mm:ss” in un numero di tipo Double, specialmente nel caso in cui tale numero sia da utilizzare in calcoli (es. tariffe orarie calcolate su un periodo frazionato).

Per semplificare la conversione è possibile utilizzare la seguente funzione:

Function Ore2Double(tempo As Date) As Double 
	' il parametro di input tempo contiene ad esempio "10:20:30" 
	Dim risultato As Double 
	risultato = Val(DatePart("h", tempo)) 
	risultato = risultato + Val(DatePart("n", tempo)) / 60 
	risultato = risultato + Val(DatePart("s", tempo)) / 3600 
	Ore2Double = risultato 
End Function

Tale funzione può essere richiamata in modo molto semplice:

Dim tempo As Date 
tempo = "10:20:30"        ' conversione implicita 
MsgBox Ore2Double(tempo)  ' restituisce un Double
Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 846 follower