Archive for the '.NET' Category

.NET, C

Come realizzare stampe in formato A3 con Crystal Report

Da qualche settimana ho cominciato ad utilizzare per lavoro la versione di Crystal Report fornita in bundle con Visual Studio 2005. Devo dire che è uno strumento potente, che consente di realizzare report di diversa natura e tipologia rimanendo all’interno dell’ambiente .NET e non dovendo ricorrere ad applicativi esterni verso cui esportare i dati, come Excel.
Ciò nonostante, a mio avviso questo applicativo possiede delle pecche che mi auguro possano essere risolte nelle release successive.
Una cosa che mi ha letteralmente fatto uscire di senno è stata la realizzazione delle stampe di grafici in formato A3. Spesso infatti i dati che intendiamo visualizzare su un grafico sono molti e la stampa in formati di dimensione inferiore, come l’A4, non consente di ottenere una rappresentazione nitida e precisa.

Grafico Crystal Report

La cosa triste che ho potuto constatare è che Crystal Report imposta automaticamente lo spazio per realizzare il progetto del report in relazione ai settings della propria stampante installata. Mi spiego meglio: se la stampante che ho installata sul mio PC non supporta la stampa in formato A3, non mi è possibile effettuare progetti dei report di dimensione A3.
Questo fatto è molto limitante per diverse ragioni. Intanto perchè spesso i report creati non necessitano di essere stampati su carta ma basta soltanto che siano visualizzati sul monitor dell’utente, e quindi non vedo la ragione per cui se non devo stampare un report non devo neanche poterlo progettare in quel formato. Un altro motivo consiste nel fatto che le impostazioni della stampante eventualmente installata sul PC dello sviluppatore, non è detto che corrispondano con quelle delle eventuali stampanti installate sui PC degli utenti reali del software.
Continue Reading »

.NET, C, Web

Thread e C#

Fino a poco tempo fa ogni qual volta avevo a che fare con i thread lo facevo con poca cognizione di causa… ogni tanto mi era capitato di fare applicazioni che dovevano popolare una lista o aspettare un input, senza che il programma si bloccasse, ma non avevo mai approfondito il tema più di tanto.

amd dualcore

Un esempio del classico uso base dei Thread in C# è il seguente:
Continue Reading »

.NET, C, Source Code, UDP Communication

UDPSender: Inviare messaggi udp in c#

Questo post fa parte della sezione Comunicazione UDP, e tratterà l’utilizzo di una semplice classe per inviare messaggi dalla propria applicazione c# utilizzando il protocollo udp.

Header UDP

La classe si chiama UDPSender e, per comodità, implementa un’interfaccia denominata INetworkSender.

public interface INetworkSender
{
	void SendMessage(string address, byte[] message);
}

In più in caso di errore la classe genera una eccezione del tipo UDPSenderException che contiene la descrizione dell’errore, la causa dell’eccezione (innerException), e l’oggetto UDPSender che ha generato l’eccezione.
Continue Reading »

.NET, C, Source Code

Calcolo del CRC in C#

Questo è un post veloce sul calcolo del codice CRC(Cyclic Redundancy Check) in C#. Per lavoro mi serviva una classe che mi calcolasse il crc-12, e non vi nascondo che ho avuto un poco di difficoltà nel trovare le specifiche dato che, di solito, gli standard più usati sono crc-8, crc16 e crc32.

binary matrix

Alla fine ho trovato una classe che mi permettava di calcolare il crc di ordine variabile da 1 a 32, ho inserito lo standard crc-12, ho aggiunto una classe per semplificare l’inserimento dei valori (CRCSettings) e una funzione per generare altri polinomi oltre quelli standard. Infine ho ripulito la struttura della classe principale.
Continue Reading »

.NET, Web

Raccolta Code Snippets per il Visual Studio

Got Code Snippets
Gotcodesnippets.net
è un ottimo sito che raccoglie Code Snippets da utilizzare nel Visual Studio. E’ possibile uploadare le proprie snippet personalizzate o scaricare quelle create dagli altri utenti nel giro di poche attimi.

Prima di scaricare gli snippet possiamo personalizzarli scegliendo una scorciatoia personalizzata. Un’altra funzionalità interessante è che gli snippet vengono scaricati nel formato Visual Studio Community Content Installer e quindi basterà un doppio clic per ritrovarsi lo snippet perfettamente integrato nel Visual Studio! Facile e veloce…! :D
Il video seguente di Michael Palermo spiega in maniera abbastanza chiara come usare le snippets scaricate dal sito e i vantaggi che se ne possono ricavare:

.NET, C

Utilizzare gli Snippets in Visual Studio

Una comodissima funzionalità presente nel Visual Studio è la possibilità di inserire degli Snippets di codice in maniera veloce e intuitiva. Gli snippets di codice sono dei blocchi di codice che possono essere ripetuti con uno schema fisso, e che è sempre noioso per un programmatore riscrivere. Supponiamo di voler scrivere una classe con diverse variabili private e rispettive property get e set: in pratica per ogni variabile dobbiamo scrivere la relativa property, oppure andare di copia incolla dopo aver scritto la prima variabile e cambiare i nomi alle variabili successive.

Scrivere una property utilizzando gli snippet è invece immediato, la procedura che descrivo qui di seguito è composta da sette immagini perchè sono uno sborone per natura :P, ma in realtà si esegue nel giro di un secondo e mezzo. :)
Per iniziare scriviamo prop nel punto del codice dove volete creare la vostra Property, che è la parola chiave che identifica questo Snippet di codice:

snippet property 1

Continue Reading »

.NET, C

Errore Designer Visual Studio

Piccolo post per un problema del Visual Studio .NET 2005 riscontrato oggi a lavoro, che spero possa aiutare qualcuno con lo stesso problema.

Mentre lavoravo su un progetto, aprendo un form che includeva al suo interno diversi User Control creati da me mi è comparsa una schermata simile alla seguente al posto del Designer:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes.

Non potevo più editare il form nel designer, ma stranamente il codice veniva compilato ed eseguito correttamente. Provando a fare Clean Solution e Build Solution l’errore permaneva. Ho provato quindi a controllare il codice generato dal designer, temendo che avesse combinato qualche disastro, ma neanche qui niente di strano. Quando iniziavo a temere il peggio, cercando su internet con un mio collega abbiamo trovato la soluzione: bisogna cancellare le directory /bin e /obj del progetto e fare il rebuild del progetto per fare tornare le cose alla normalità. Ho sempre reputato il Visual Studio un ottimo prodotto, ma questo bug è abbastanza antipatico: mi ha fatto perdere un pò di tempo e adesso mi si ripropone in continuazione, costringendomi a cancellare le directory da Explorer e a rifare il rebuild… :f7:

Non capisco sinceramente perchè facendo il Clean Solution più il Build Solution la cosa non si risolva da sola, visto che in teoria il compito del rebuild dovrebbe essere proprio quello di cancellare tutti i file temporanei creati!

.NET, C, Source Code

Accesso ottimizzato alle Bitmap

Se bisogna fare elaborazione delle immagini in c#, il metodo più immediato per un programmatore di accedere ai pixel di una Bitmap è quello di utilizzare i metodi SetPixel() e GetPixel() forniti dal .NET. Purtroppo il metodo più veloce per il programmatore, spesso non corrisponde al metodo più veloce per il programma: considerando che queste due funzioni sono MOLTO lente, se il vostro scopo è quello di analizzare tutti i pixel di un immagine o, ancora peggio, di fare elaborazione di tante immagini in sequenza, è fortemente sconsigliato utilizzarle. Per fortuna il c# è un linguaggio molto flessibile, che permette di fare cose ad altissimo livello ma che comunque ci lascia sempre la possibilità di scendere a basso livello quando è necessario.

In questo articolo per semplicità tratterò soltanto le immagini a 8bpp (8 bit per pixel), ovvero a 256 colori.

Per riuscire a lavorare con i dati di un immagine in maniera veloce la soluzione è solo una: utilizzare il puntatore ai dati dell’immagine! Lavorare con i puntatori ad immagini è un pò come lavorare con i puntatori a char (le stringhe in c++): Il puntatore punterà al primo indirizzo di memoria dei dati della bitmap, dove sarà contenuto il primo pixel. Incrementando il puntatore andremmo ottenendo via via i valori degli altri pixel.
Puntatore a bitmap
Continue Reading »