martedì 3 aprile 2007
Ultimamente capita spesso di trovare sul sito di PC World diversi tipi di classifiche. Questa volta tocca ai 50 migliori prodotti tecnologici di tutti i tempi. Il primo posto è occupato da Netscape Navigator. Al decimo c'è una pietra miliare dei videogiochi, il mitico Tetris
. Microsoft compare nella graduatoria al ventesimo posto con Windows 95 e al 49° con Excel.
Come si può leggere qui, la recente release 2.5 beta di TestDriven.NET supporta anche le edizioni Express di Visual Studio, ad eccezione di Visual Web Developer, il cui supporto sarà comunque aggiunto nelle prossime versioni.
Ogni versione di Windows è caratterizzata da un nuovo stile per le icone di sistema. Se la nostra applicazione fa uso di queste icone, utilizzando il Platform Invoke è possibile recuperare tali risorse direttamente dai file di Windows, in modo che il programma adatti il proprio stile grafico a quello del sistema su cui è in esecuzione:
[DllImport("shell32.dll", EntryPoint = "ExtractIconA")]
private static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
[DllImport("user32.dll")]
private static extern int DestroyIcon(IntPtr hIcon);
public Image GetIcon(string fileName, int iconNumber)
{
IntPtr hInstance = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]);
IntPtr hIcon = ExtractIcon(hInstance, fileName, iconNumber);
Bitmap bitmap = Bitmap.FromHicon(hIcon);
DestroyIcon(hIcon);
return bitmap;
}
La funzione GetIcon restituisce un oggetto di tipo Bitmap che rappresenta l'icona estratta dal file specificato. Ad esempio, per ottenere l'icona dell'unità di sistema di Windows Vista si deve utilizzare la seguente istruzione:
pictureBox1.Image = GetIcon("imageres.dll", 30);
Dove 30 è la posizione dell'icona nel file (l'indice è a base 0).
Come annunciato da varie fonti, poche ore fa è stato rilasciato per Windows Vista l'aggiornamento che risolve il bug relativo ai cursori animati. Il bollettino di sicurezza relativo al problema è disponibile qui.
E così siamo arrivati a quota 6...
Version 3.70 beta 6
1. Bugs corrected:
a) WinRAR shell did not allow to create recovery volumes for locked RAR volumes. Now the recovery volumes option is accessible for both locked and not locked RAR volumes;
b) WinRAR displayed incorrect sizes for files inside of UDF ISO archives if file size exceeded 4 GB. Such files were unpacked correctly, but their sizes in file list window were displayed wrong.
Come già per la beta 5, anche in questo caso la nuova release si limita a correggere un paio di bug. Il download è disponibile qui.
Sulla rete è possibile trovare alcuni convertitori di codice da C# a VB .NET e viceversa. Anche se in alcuni casi il codice viene tradotto nel modo corretto, trattandosi di tool automatici non bisogna mai aspettarsi grandi risultati... Recentemente ho provato il Code Converted di Telerik, attualmente in versione beta. Ho fatto un test cercando di tradurre un semplice ciclo for da C# a VB.NET:
for (int i = 0; i < 10; i++)
System.Debug.WriteLine(i.ToString());
Ed ecco qual è stato il risultato:
Dim i As Integer = 0
While i < 10
System.Debug.WriteLine(i.ToString())
System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1)
End While
La semantica dell'algoritmo è rispettata... Ma sinceramente non avevo mai pensato a scrivere un ciclo for in questo modo ... Bello soprattutto l'uso di Math.Max e Interlocked.Increment 
A questo indirizzo è disponibile una libreria realizzata in C# che riproduce il look-and-feel della toolbox di Visual Studio 2005:
