domenica 25 giugno 2017

C# Dichiarazione di variabile nel richiamare una funzione ed utilizzo variabili

Una delle novità di C# 7, uscito con il nuovo ambiente di sviluppo Visual Studio 2015, è quella di dichiarare le variabili all'interno di una chiamata ad una funzione, ed utilizzare tale variabili dopo aver richiamato tale funzione.
Qui di seguito si riporta un frammento di codice.

            Dati(out int numeroPrimo, out int numeroSecondo);
            MessageBox.Show("Valore numeroprimo: " + numeroPrimo + " Valore numeroSecondo: " + numeroSecondo);
       
        private void Dati(out int primo, out int secondo)
        {
            primo = +3;
            secondo = +3;

        }

sabato 24 giugno 2017

Evento gratuito per le disabilità visive

Un evento forse unico in Italia ma soprattutto con una finalità molto importante quella organizzata da Microsoft Italia, che vedrà nelle giornate del 27 e 28 giugno 2017, un impegno sociale nel affiancare i partecipanti intenti a realizzare secondo linee guida indicate nell'evento soluzioni innovativi per le persone con disabilità visive.
Un bellissimo evento a cui i programmatori non posso mancare, per iscrizioni e maggiori informazioni visitate il seguente sito https://www.microsoftevents.com/profile/form/index.cfm?PKformID=0x21096285605&wt.mc_id=AID520874_EML_5116468

venerdì 23 giugno 2017

C# 7 novità del linguaggio parola chiave switch

Altra novità del linguaggio di programmazione C# 7.0 presente dalla versione di Visual Studio 2015 è quella della parola switch, nel quale è possibile indicare nei vari casi (case) se è un determinato oggetto fa in un modo o altro.
Per esempio passando un oggetto di tipo control, possiamo prevedere che in vari casi può fare un'azione ono, oppure in base ai valori di alcune proprietà di tale controllo.
Qui di seguito si riporta l'esempio.

  Control MioControllo =  BtnNovita;

            switch (MioControllo)
            {
                case TextBox t:
                    MessageBox.Show("Questa è una casella di testo");
                    break;
                case Button pulsante when pulsante.Text == "prova":
                    MessageBox.Show("Pulsante prova");
                    break;
                case Button mioPulsante:
                    MessageBox.Show("testo: " + mioPulsante.Text);
                    break;
               default:
                   MessageBox.Show("Nessun tipo");
                    break;
                case null:
                    MessageBox.Show("Inesistente");
                    break;
            }

Naturalmente btnNovita è un controllo di tipo button, ma possiamo anche impostare il null a tale controllo o un controllo di tipo picturebox

mercoledì 21 giugno 2017

whatsApp utilizzo dei caratteri speciali grassetto, corsivo e barrato

Nel programma Whatsapp, è possibile inviare messaggi con formattazione.
Per esempio per scrivere una parola o frase in grassetto, scrivere il simbolo asterisco seguito attaccato dalla parola e poi subito dopo l'altro asterisco.
Se per esempio scrivo *Ciao* e faccio invio, verrà visualizzata la parola Ciao in grassetto.
Mentre per il corsivo, devo usare il simbolo del simbolo Barra in basso seguito senza spazi dalla frase e poi sempre attaccato la barra in basso.
Se per esempio scriviamo _Ciao_ ed inviamo, la parola Ciao sarà in corsivo.
Infine, utilizzando il simbolo della tilde, possiamo rendere la parola barrata.
Se scriviamo ~Ciao~ la parola Ciao verrà visualizzata barrata.

martedì 20 giugno 2017

free ebook download mongodb con C#

MongoDB 3 Succinctly

Per chi è alla ricerca di un ebook gratuito sulla programmazione di MongoDB tramite il linguaggio C#, dal seguente sito https://www.syncfusion.com/resources/techportal/details/ebooks/MongoDB_3_Succinctly si può scaricare la versione PDF o quella per dispositivo mobile di un libro che introduce la programmazione C# con questo database.
L'ebook è in lingua inglese di circa 109 pagine.

domenica 18 giugno 2017

.Net ripulire i file di testo dai caratteri speciali con VB.Net e C#

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_net-realizzare-un-programma-per-ottimizz_1531.aspx


L’articolo che proponiamo oggi riguarda la possibilità di realizzare un programma di tipo “Windows Application” tramite il linguaggio di programmazione Visual Basic .Net e C#, con Visual Studio 2015 community, con il quale leggere e ottimizzare tutti i file di testo, per ripulirli dai caratteri speciali.
Può capitare, che in un contesto con vari sistemi operativi, tra Unix e Windows, lo scambio dei file, può comportare la presenza di alcuni caratteri speciali, che Windows non riconosce.
L’articolo vuole guidare il lettore a realizzare un semplice programma per la bonifica di tali file.

Creazione del progetto

Prima di tutto, bisogna creare un nuovo progetto di tipo “Windows Application” con Visual Studio 2015, con il linguaggio di proprio interesse.
Aggiungiamo alla nostra form, un pulsante, che all’evento click eseguirà determinate azioni.
Nel file di configurazione, nel file App.config, scriviamo due parametri, uno che indica il percorso dove si trovano i file, e l’altro se esaminare un file o un certo tipo di file.
Si riporta qui di seguito il frammento di codice.


  <appSettings >

    <add key="Percorso" value="E:\testfile\"/>

    <add key="NomeFile" value="*.txt"/>

</appSettings>


Stesura del codice

Facciamo doppio click sul pulsante, ed in visualizzazione codice, in alto sopra ogni dichiarazione, aggiungiamo lo spazio dei nomi che ci permetterà di gestire i file di testo, le regular expression e i file di configurazione.
Si riporta qui di seguito le dichiarazioni per entrambi i linguaggi.


VB.Net

Imports System.Configuration

Imports System.IO

Imports System.Text.RegularExpressions
C#

using System.Configuration;

using System.Collections.Specialized;

using System.Text.RegularExpressions;


Ora passiamo nell’evento click del pulsante, nel quale dobbiamo estrapolare le informazioni dal file di configurazione e poi esaminare il file o i file presenti nella cartella indicata nel file di configurazione.
Qui di seguito si riporta tale dichiarazione.


VB.Net

  Private Sub btnOttimizza_Click(sender As Object, e As EventArgs) Handles btnOttimizza.Click

        Dim Percorso As String = ConfigurationManager.AppSettings("Percorso")

        Dim NomeFile As String = ConfigurationManager.AppSettings("NomeFile")

        For Each percorsoFile As [String] In Directory.GetFiles(Percorso, NomeFile)

            LeggiCreaFile(percorsoFile)

        Next

    End Sub

C#

private void btnOttimizza_Click(object sender, EventArgs e)

        {

            string Percorso = ConfigurationManager.AppSettings["Percorso"];

            string NomeFile = ConfigurationManager.AppSettings["NomeFile"];

            foreach (String percorsoFile in Directory.GetFiles(Percorso, NomeFile))

            {

                LeggiCreaFile(percorsoFile);

 

            }

 
        }



Si crea una funzione, che dato il percorso e nome del file, esamina il suo contenuto, riga per riga, e poi verifica la presenza di caratteri speciale, che tramite un’altra funzione (TrascodificaTesto) converte il testo anomalo in quello da noi indicato.
Al tempo stesso nella funzione viene scritto in un file temporaneo, la riga bonificata dai caratteri speciali.
Si riporta qui di seguito tali dichiarazioni per entrambi linguaggi.


VB.Net

Private Sub LeggiCreaFile(pPercorsoFile As String)

        Try

 

            Dim FileTemporaneo As String = DateTime.Now.ToString("yyyyMMddhhmmss") + "_" + Path.GetFileName(pPercorsoFile)

            FileTemporaneo = Path.Combine(Path.GetDirectoryName(pPercorsoFile), FileTemporaneo)

 

            Using ScriviFile As New System.IO.StreamWriter(FileTemporaneo, False)

 

 

                Dim letturafile As New System.IO.StreamReader(pPercorsoFile)

                Dim Linea As String = ""

                Dim ContaRiga As Int32 = 0

                Linea = letturafile.ReadLine()

                While Linea IsNot Nothing

 

 

                    ScriviFile.WriteLine(TrascodificaTesto(Linea))

                    ContaRiga += 1

                    If ContaRiga = 100 Then

                        ScriviFile.Flush()

                        ContaRiga = 0

 

                    End If

                    Linea = letturafile.ReadLine()

                End While

                If ContaRiga > 0 Then

                    ScriviFile.Flush()

                End If

 

 

 

                letturafile.Close()

            End Using

 

        Catch ex As Exception

 

            Throw

        End Try

 

 

    End Sub

C#

private void LeggiCreaFile(string pPercorsoFile)

        {

            try

            {

 

                string FileTemporaneo = DateTime.Now.ToString("yyyyMMddhhmmss") + "_" + Path.GetFileName(pPercorsoFile);

                FileTemporaneo = Path.Combine(Path.GetDirectoryName(pPercorsoFile), FileTemporaneo);

 

                using (System.IO.StreamWriter ScriviFile = new System.IO.StreamWriter(FileTemporaneo, false))

                {

                   System.IO.StreamReader letturafile = new System.IO.StreamReader(pPercorsoFile);

                    string Linea = "";

                    Int32 ContaRiga = 0;

 

                    while ((Linea = letturafile.ReadLine()) != null)

                    {

                         ScriviFile.WriteLine(TrascodificaTesto(Linea));

                        ContaRiga += 1;

                        if (ContaRiga == 100)

                        {

                            ScriviFile.Flush();

                            ContaRiga = 0;

                        }


                    }

                    if (ContaRiga > 0)

                    {
                        ScriviFile.Flush();

                    }

                    letturafile.Close();

  
                }

               }

            catch (Exception ex)

            {
                throw;
            }

 

 

        }


A questo punto scriviamo la funzione che permette di bonificare il contenuto del file, con un’espressione regolare, con i valori da noi indicati.
Qui di seguito si riporta tale dichiarazione per entrambi linguaggi.


VB.Net

Private Function TrascodificaTesto(pTesto As String) As String

        pTesto = Regex.Replace(pTesto, "[åàáâãäæ]", "a")

        pTesto = Regex.Replace(pTesto, "[ÁÀÄÃÅÂ]", "A")

        pTesto = Regex.Replace(pTesto, "[èéêë]", "e")

        pTesto = Regex.Replace(pTesto, "[ÈÉËÊ]", "E")

        pTesto = Regex.Replace(pTesto, "[ìíîï]", "i")

        pTesto = Regex.Replace(pTesto, "[ÍÌÏÎ]", "I")

        pTesto = Regex.Replace(pTesto, "[òóôõö]", "o")

        pTesto = Regex.Replace(pTesto, "[ÓÒÖÔÕ]", "O")

        pTesto = Regex.Replace(pTesto, "[ùúûü]", "u")

        pTesto = Regex.Replace(pTesto, "[ÚÙÛÜ]", "U")

        pTesto = Regex.Replace(pTesto, "[¥]", "N")

        pTesto = Regex.Replace(pTesto, "[ý]", "y")

        pTesto = Regex.Replace(pTesto, "[Š]", "S")

        pTesto = Regex.Replace(pTesto, "[š]", "s")

        pTesto = Regex.Replace(pTesto, "[ç]", "c")

        pTesto = Regex.Replace(pTesto, "[ñ]", "n")

        pTesto = Regex.Replace(pTesto, "[Ñ]", "N")

        pTesto = Regex.Replace(pTesto, "[ž]", "z")

        pTesto = Regex.Replace(pTesto, "[[]", "(")

        pTesto = Regex.Replace(pTesto, "[]]", ")")

        pTesto = Regex.Replace(pTesto, "[@]", " ")

        pTesto = Regex.Replace(pTesto, "[#]", " ")

        pTesto = Regex.Replace(pTesto, "[ø]", " ")

        pTesto = Regex.Replace(pTesto, "[^\u0000-\u007F]", " ")

 

        Return pTesto

    End Function

C#

 

string TrascodificaTesto(string pTesto)

        {

 

 

         

          

            pTesto = Regex.Replace(pTesto, "[åàáâãäæ]", "a");

            pTesto = Regex.Replace(pTesto, "[ÁÀÄÃÅÂ]", "A");

            pTesto = Regex.Replace(pTesto, "[èéêë]", "e");

            pTesto = Regex.Replace(pTesto, "[ÈÉËÊ]", "E");

            pTesto = Regex.Replace(pTesto, "[ìíîï]", "i");

            pTesto = Regex.Replace(pTesto, "[ÍÌÏÎ]", "I");

            pTesto = Regex.Replace(pTesto, "[òóôõö]", "o");

            pTesto = Regex.Replace(pTesto, "[ÓÒÖÔÕ]", "O");

            pTesto = Regex.Replace(pTesto, "[ùúûü]", "u");

            pTesto = Regex.Replace(pTesto, "[ÚÙÛÜ]", "U");

            pTesto = Regex.Replace(pTesto, "[¥]", "N");

            pTesto = Regex.Replace(pTesto, "[ý]", "y");

            pTesto = Regex.Replace(pTesto, "[Š]", "S");

            pTesto = Regex.Replace(pTesto, "[š]", "s");

            pTesto = Regex.Replace(pTesto, "[ç]", "c");

            pTesto = Regex.Replace(pTesto, "[ñ]", "n");

            pTesto = Regex.Replace(pTesto, "[Ñ]", "N");

            pTesto = Regex.Replace(pTesto, "[ž]", "z");

            pTesto = Regex.Replace(pTesto, "[[]", "(");

            pTesto = Regex.Replace(pTesto, "[]]", ")");

            pTesto = Regex.Replace(pTesto, "[@]", " ");

            pTesto = Regex.Replace(pTesto, "[#]", " ");

            pTesto = Regex.Replace(pTesto, "[ø]", " ");

            pTesto = Regex.Replace(pTesto, @"[^\u0000-\u007F]", " ");

 

            return pTesto;

        }

 

Conclusioni

L’articolo ha voluto fornire al lettore delle basi sulla realizzazione di un semplice programma per la gestione dei file di testo, per la relativa verifica del formato.
Una tecnica che può tornare utile, nei contesti in cui si fa uso intenso di file, soprattutto con diversi sistemi operativi come possono essere l’integrazione tra Unix e Windows.
Naturalmente questo esempio di codice, di un possibile programma può essere esteso, realizzando programmi di una certa funzionalità e complessità.