Archivo de la categoría: SomeCode

PowerTools : Remove and Sort Imports

Uno de los guiños de extensiones de Visual Studio como las Power Tools, son detalles como poder eliminar las referencias no utilizadas y al mismo tiempo ordenarlas.

No es que sea algo crucial, emocionante o imprescindible, pero lo cierto es que sobretodo en proyectos compartidos antes de entregar el ‘release’ final soy de esos que dedica un montón de horas en pulir todo aquello que aunque escrito no tiene ninguna utilidad.

 

Pienso sinceramente que la calidad del código, también pasa por entregar justo lo que interviene. Asi pues… con el “Remove and Sort Imports” de las power tools y aunque parezca mentira voy a ahorrarme mi tiempecillo J

Saludos,
Pep Lluis,

UPDATE ME DEVUELVE ERROR : CON LA FECHA DEL DGV

Desbordamiento de SqlDateTime. Debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM.

En determinados escenarios donde intervienen plataformas en múltiples lenguajes, puede ser necesario implementar unas funciones extras para que la interacción entre formatos se realice correctamente. (sin hablar de las excepciones para tener en cuenta si sumamos el tema de zonas horarias).

Una idea seria realizar la adaptación entre la fecha y hora del objeto (en este caso el DGV) y la asignación de los valores que retornaran, cuando los extremos esperan diferentes formatos.

Puedes capturar el “cellFormating” del DGV y controlar la conversión en el “Parse”.

Aquí tienes un Ejemplo :

http://msdn.microsoft.com/es-es/library/system.windows.forms.datagridview(VS.80).aspx

En otras situaciones donde no disponemos de los “Format” y “Parse” podemos optar por creamos nuestra propia estructura…

   

    ‘ Definicion de la estructura para Fecha/Hora

    ‘ segun la definicion del lpSystemTime

    Structure FechaYHora

        Public Año As UInt16

        Public Mes As UInt16

        Public DiaDeLaSemana As UInt16

        Public Dia As UInt16

        Public Hora As UInt16

        Public Minutos As UInt16

        Public Segundos As UInt16

        Public Milis As UInt16

    End Structure

 

    ‘Funciones Fecha/Hora sistema

    Declare Function GetSystemTime Lib «Kernel32.dll» (ByRef lpSystemTime As FechaYHora) As UInt32

    Declare Function SetSystemTime Lib «Kernel32.dll» (ByRef lpSystemTime As FechaYHora) As UInt32

 

    Private MiFechaYHora = New FechaYHora

 

    Sub DelServidor(ByVal FechaHoraOrigen As DateTime)

        MiFechaYHora.Año = Convert.ToUInt16(FechaHoraOrigen.Year)

        MiFechaYHora.Mes = Convert.ToUInt16(FechaHoraOrigen.Month)

        MiFechaYHora.Dia = Convert.ToUInt16(FechaHoraOrigen.Day)

        MiFechaYHora.Hora = Convert.ToUInt16(FechaHoraOrigen.Hour)

        MiFechaYHora.Minutos = Convert.ToUInt16(FechaHoraOrigen.Minute)

        MiFechaYHora.Segundos = Convert.ToUInt16(FechaHoraOrigen.Second)

        ‘ luego debeis asignarlo segun convenga… desde o hacia el control

        ‘ o llamando a la funcion de asignar la nueva entrada

        SetSystemTime(MiFechaYHora)

    End Sub

 

Espero te ayude,
Pep Lluis,

Señales de control del puerto serie a través del ‘PinChanged’

Fernando, contestando a tu pregunta de cómo capturar los cambios en las señales de control de puerto serie, te dejo este ejemplo básico esperando te sea de utilidad.

    Dim MiSerialPort As New IO.Ports.SerialPort
 
    Sub Inicializando()
        MiSerialPort.Open()
        AddHandler MiSerialPort.PinChanged, AddressOf MiSerialPort_PinChanged
    End Sub
 
    Private Sub MiSerialPort_PinChanged(ByVal sender As System.ObjectByVal e As System.IO.Ports.SerialPinChangedEventArgs)
        Select Case e.EventType
            Case IO.Ports.SerialPinChange.CtsChanged
                ‘Clear To Send
                If MiSerialPort.CtsHolding Then
                    ‘CTS esta en ON
                Else
                    ‘CTS esta en OFF
                End If
            Case IO.Ports.SerialPinChange.DsrChanged
                ‘Data Set Ready
                If MiSerialPort.DsrHolding Then
                    ‘DSR esta en ON
                Else
                    ‘DSR esta en OFF
                End If
            Case IO.Ports.SerialPinChange.Ring
                ‘Ring
            Case IO.Ports.SerialPinChange.Break
                ‘Break
            Case IO.Ports.SerialPinChange.CDChanged
                ‘Carrier Detect
                If MiSerialPort.CDHolding Then
                    ‘…
                
Else
                    ‘….
                End If
        End Select
    End Sub

:-))
Pep Lluis,

Computing Hash for SHA1

I have received a question asking for How I can compute a SHA1 hash.
You can use this function or similar to get 160bit hash.

Imports
System.Security.Cryptography

    ' Computing Hash for SHA1
    Function SHA1(ByVal dataStream As StringAs Byte()
        Dim Ascii As New ASCIIEncoding
        Dim tmpsource(dataStream.Length) As Byte
        tmpsource = Ascii.GetBytes(dataStream)
        Dim sha As New SHA1CryptoServiceProvider()
        Return sha.ComputeHash(tmpsource)
    End Function
PepLluis,

Finding items in a list C#

Many of you are asking how to perform searches on lists as detailed in the previous post using C# syntax. Well in a summary form this would be the equivalent expression:

Muchos de vosotros me estáis pidiendo como realizar búsquedas en listas como la detallada en el post anterior y en C#. Bien de una forma resumida esta sería la expresión equivalente :

public static List<Person> People = new List<Person> … // to do: Populate list

// Find name function
public static Person FindField(string toFind)
{
  Person result = People.Find(delegate(Person fl) {return fl.Name == toFind;});
  return result;
}

// ..
// ..
// ..
// Class Person
        public class Person
        {
            public string Name { get; set; }
            public string surname { get; set; }
            public int Age { get; set; }
        } 

I hope this will be useful,
Pep Lluis,

Encontrar items en una Lista(De

Dim Personas As New List(Of Persona)
Dim BuscarA = "Yuis"
    Sub Prueba()
        Personas.AddRange(
            {New Persona With {.Nombre = "Pep", .Apellido = "Lluis"},
             New Persona With {.Nombre = "Yuis", .Apellido = "Franco"},
             New Persona With {.Nombre = "Juansa", .Apellido = "Yopis"},
             New Persona With {.Nombre = "Marc", .Apellido = "Rubiño"}
            })
Dim ficha As Persona = Personas.Find(AddressOf Buscar)
        If ficha IsNot Nothing Then
            MessageBox.Show(String.Format("Ficha de : {0} {1}", ficha.Nombre, ficha.Apellido))
        Else
            MessageBox.Show("Ficha: " & BuscarA & "Inexistente: ")
        End If
    End Sub


Function Buscar(ByVal p As Persona) As Boolean
     If p.Nombre = BuscarA Then
         Return True
     Else
         Return False
     End If
End Function
.....
.....




Public Class Persona
    Property Nombre As String
    Property Apellido As String
    Property Edad As Integer
End Class
;-)
Pep Lluis,

Todo lo que necesitas para crear aplicaciones para Windows Phone 7 en Visual Basic

Disponer de un Sistema operativo compatible: Windows 7 o Windows Vista

Y además

Puedes seguir toda la evolución leyendo de sus principales fuentes :

Creo que con esto tendréis suficiente material para leer un rato Sonrisa
Saludos,
Pep Lluis,

Cuestión de promedios

Respondiendo a una consulta sobre el anterior post de como sacar promedios de cadenas representando valores numéricos y provenientes de una lista, ‘combobox’ o cualquier otro origen en texto :

Dim Consumo As Integer = 0
Dim Consumos = {«10», «11», «21», «31», «41»}
Console
.WriteLine((Array.ConvertAll(Consumos,
                                    Function(s) If(Integer.TryParse(s, Consumo), Consumo,
                                                  
New Integer))).Average)

Espero que os sea practico,
Pep Lluis,

String.Format : Tambien Existe :-)

‘ Repasando codigo, aun suelo encontrar las eternas expresiones de formateo de cadenas
‘ heredadas del mas puro estilo 6.0, entre otras estoy hablando de mid, left, right
‘ y como no de format(a,»##,##») y un largo etc.

‘ Nada que objetar! solo recordaros que en .NET podemos salvar la gran mayoria de expresiones
‘ que requieren formato con el uso de los conocidos parametros de substitucion ‘{x}’
‘ :-))

Module Module1

‘ formateando strings
 
 
Sub
Main()
            
Dim Cadena As String = «Consumo en Kw : {0}, precio : {1}, total : {2}»
            
Dim Consumos = {10, 11, 21, 31, 41}
            
Dim Tarifa = Function(n) 
                                    
Select Case n 
                                           
Case Is > 40 : Return 4.6 
                                           
Case Is > 30 : Return 6.3 
                                           
Case Is > 20 : Return 8.2 
                                           
Case Is > 10 : Return 10.5 
                                           
Case Else : Return 12.4 
                                     
End Select
                         
End Function 

        For
Each kw In
Consumos
             
Console.WriteLine(String.Format(Cadena, kw.ToString, Tarifa(kw).ToString, (kw * Tarifa(kw)).ToString))  
        
Next
       
Console
.ReadLine()
  End Sub
End Module