miércoles, octubre 08, 2008

Serialización Binaria

Aquí va un ejemplo mas de como hacer serialización binaria, con propósitos de transmitir objetos, o almacenarlos en una Base de Datos



Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

Public Class SerializacionBinaria

Public Shared Function Serializa(ByVal Obj As Object) As Byte()
Dim MS As New MemoryStream
Dim BF As New BinaryFormatter
MS.Position = 0
Dim Buffer() As Byte
Try
BF.Serialize(MS, Obj)
Buffer = MS.ToArray
Catch ex As Exception
Throw ex
Finally
MS.Flush()
MS.Close()
End Try
Return
Buffer
End Function

Public Shared Function Deserializa(ByVal SerializedData() As Byte) As Object
Dim MS As MemoryStream = FuncsAndUtils.ArrayToStream(SerializedData)
Dim BF As New BinaryFormatter
MS.Position = 0
Dim odeserialized As Object
Try
odeserialized = BF.Deserialize(MS)
Catch ex As Exception
Throw ex
Finally
MS.Flush()
MS.Close()
End Try
Return odeserialized
End Function

Public Shared Function Deserializa(ByVal SerializedData As Stream) As Object
Dim BF As New BinaryFormatter
Dim odeserialized As Object
Try
odeserialized = BF.Deserialize(SerializedData)
Catch ex As Exception
Throw ex
End Try
Return
odeserialized
End Function

End Class

martes, octubre 07, 2008

Conversores

Con la siguiente clase lo que se pretende es, poder convertir tipos de datos, entre arreglos de bytes e imagen. esto es para poder transmitirlos o guardarlos en una base de datos.



Imports System.IO
Imports System.Text
Imports System.Drawing


Public Class FuncsAndUtils
   Public Shared Function ArrayToStream(ByVal buffer() As Byte) As Stream
     Dim Flujo As Stream = New MemoryStream(buffer)
     Return Flujo
   End Function

   Public Shared Function ArrayToBitmap(ByVal Buffer() As Byte) As Bitmap
      Return StreamToBitmap(ArrayToStream(Buffer))
    End Function

   Public Shared Function StreamToArray(ByVal Flujo As Stream) As Byte()
       Dim streamLength As Integer = Convert.ToInt32(Flujo.Length)
       Dim fileData(streamLength) As Byte
       ' Read the file into a byte array
       Flujo.Read(fileData, 0, streamLength - 1)
       Flujo.Close()
       Return fileData
    End Function


    Public Shared Function StreamToBitmap(ByVal Flujo As Stream) As Bitmap
       Try
          Return New Bitmap(Flujo)
       Catch ex As Exception
          Throw ex
       End Try
    End Function



   Public Shared Function BitmapToArray(ByVal bmp As Bitmap) As Byte()
      Dim stream As New System.IO.MemoryStream()
       bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp)
       stream.Position = 0
       Dim data(stream.Length) As Byte
       stream.Read(data, 0, stream.Length)
       Return data
    End Function

    Public Shared Function StringToArray(ByVal valor As String) As Byte()
       Return (New UnicodeEncoding).GetBytes(valor)
    End Function

    Public Shared Function BitmapToStream(ByVal bmp As Bitmap) As Stream
       Dim stream As New System.IO.MemoryStream()
       bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp)
       stream.Position = 0
       Return stream
    End Function

    Public Shared Function ArrayToString(ByVal valor() As Byte) As String
       Return New UnicodeEncoding().GetString(valor)
    End Function



End Class

sábado, mayo 12, 2007

LABEL MULTILINEA

Vamos a crear un web control, que sera un label multilinea con scrollBar

Este control es practico cuando necesitamos un campo de tipo lectura y disponemos de poco espacio para mostrar la información.

Vamos a crear un nuevo Proyecto de tipo Class Library.

Lo importante son las Librerias que importamos y como lo declaramos.
A continuación el codigo.


Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class MultiLineLabel
Inherits CompositeControl
#Region "Variables"
Private lblcontent As Label
#End Region
#Region "Propiedades"
Public Property Text() As String
Get
EnsureChildControls()
Return lblcontent.Text
End Get
Set(ByVal value As String)
EnsureChildControls()
lblcontent.Text = value
End Set
End Property
Public Overloads Property Height() As String
Get
EnsureChildControls()
Return lblcontent.Height.ToString
End Get
Set(ByVal
value As String)
EnsureChildControls()
lblcontent.Height = Unit.Parse(value)
End Set
End Property
Protected Overrides ReadOnly Property
TagKey() As System.Web.UI.HtmlTextWriterTag
Get
Return
HtmlTextWriterTag.Div
End Get
End Property
#End Region
#Region
"Crear control"
Protected Overrides Sub CreateChildControls()
lblcontent = New Label
lblcontent.ID = Me.ID & "Lab"
Me.Controls.Add(lblcontent)
End Sub
#End Region
#Region
"Render Tags"
Protected Overrides Sub RenderContents(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.AddStyleAttribute("overflow", "auto")
writer.RenderBeginTag(HtmlTextWriterTag.Div)
lblcontent.RenderControl(writer)
writer.RenderEndTag() 'DIV
End Sub
#End Region
End Class