Foros del Web » Programación para mayores de 30 ;) » .NET »

FAQ´S del foro de Net

Estas en el tema de FAQ´S del foro de Net en el foro de .NET en Foros del Web. Tema: Windows Forms Pregunta: ¿Cómo crear un contenedor de archivos, tipo archivo zip? Respuesta: Puedes crear una clase donde almacenes en memoria los archivos y ...

  #151 (permalink)  
Antiguo 11/03/2009, 00:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: FAQ´S del foro de Net

Tema: Windows Forms
Pregunta: ¿Cómo crear un contenedor de archivos, tipo archivo zip?
Respuesta:

Puedes crear una clase donde almacenes en memoria los archivos y utilizar los metodos serializar y deserializar para guardarlos en un contenedor de archivos.

En este caso, explico un ejemplo con imagenes, pero se puede hacer con cualquier otro archivo.

Formulario Principal, ocupas 2 botones y un PictureBox1 con los nombres por defecto.

Código:
Imports System
Imports System.IO
Imports System.Collections
Imports System.Text
Imports System.Xml

Public Class Form1

    'FileClass es la clase que contiene todas las imagenes, esta clase contiene 2 
    'funciones, una se llama GetImagen(nombreimagen) y otra que se llama
'addImagen(nombreimagen,laimagen)

    Public cd As FileClass

    'En este caso mi archivo contenedor se llama files.dat

    Public strPath As String = "C:\files.dat"

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        cd = New FileClass
        cd = Deserialize(strPath)

        'La funciom Desearialize se encuentra en un modulo, pero la puedes poner 
        'en el formulario, tu eliges. Esta funciona es la que extrae los archivos del 
        'contenedor

        PictureBox1.Image = cd.GetImagen("imag (3).jpg")

        'Utilizo el picturebox para comprobar si me extrajo el archivo, en este caso
        ' una imagen al azar. En este caso mando llamar a esta la funcion 
        'GetImagen  ya que es la que me trae la imagen por medio del nombre.
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        cd = New FileClass

        'En esta parte agrego las imagenes que tengo en la carpeta c:\imag el cual
        'contiene 12 imagenes llamadas imag (1), imag(2) ..... Imag (12).jpg, pero tu 
        'lo puedes modificar para que agrege como tu quieras, ya se por medio de 
        'un openfiledialog u otra forma.

        For i As Integer = 1 To 12

            'Cargo la imagen en la memoria

            Dim img As New Bitmap("C:\imag\imag (" & i & ").jpg")

            'la guardo en la case Fileclass con la funcion AddImagen(nombreimagen,imagen).

            cd.AddImagen("imag (" & i & ").jpg", img)
        Next

'Una vez guardadas las imagenes en la clase fileclass, creo el contenedor con la 
'funcion Serialize(larutadelarchivocontenedor,laclasefileclass)

        Serialize(strPath, cd)
    End Sub
End Class
La clase FileClass, es la que hace la magia, esta clase almacena las imagenes y ademas contiene 2 funciones addimagen y getimagen.

En esta clase tengo 2 arreglos de tipo arraylist, ImagenName que guarda el nombre de la imagen y ImageFile que guarda la imagen cargada en la memoria.

Código:
<Serializable()> _
Public Class FileClass
    Dim imageName As New ArrayList
    Dim ImageFile As New ArrayList
 
    ' Esta funcion Guarda las imagenes y el nombre en los arreglos, si quieres 
'guardar otro tipo de archivo, entonces cambia el parametro "imagen as Bitmap" 
'como files as Object o el tipo del archivo que quieras.
'Si te fijas bien guardo el nombre del a imagen y la imagen a la vez, con esto los 
'indices de los 2 arreglos van a concordar.
 
   Public Sub AddImagen(ByVal nombre As String, ByVal imagen As Bitmap)
        imageName.Add(nombre)
        ImageFile.Add(imagen)
    End Sub


  'Esta funcion extrae la imagen guardada en el arreglo, entonces la llamo con el 
'nombre del la imagen. Como los 2 arreglos concuerdan con los indices, entonces 
'obtengo el indice del arreglo imageName por medio de 
'IndexOf(nombredelaimagen) y con ese indice obtengo la imagen guardada en el 
'areglo ImageFile con Item(indicedelaimagen) y la retorno
 
   Public Function GetImagen(ByVal nombre As String) As Bitmap
        Return ImageFile.Item(imageName.IndexOf(nombre))
    End Function
End Class
Y por ultimo el Modulo, el cual contiene las funciones Serialize y Deserialize, el cual nos crearan los contenedores.
Serialize para crear el archivo contenedor y Deserializa para extraer los datos del Archivo contenedor

Código:
Imports System.IO
Imports System.Collections
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Runtime.Serialization.Formatters.Soap
Imports System.Runtime.Serialization
Imports System.Text

Module Module1

    Friend Sub Serialize(ByVal strPath As String, ByVal myProps As FileClass)

        ' creo un filestream  para guardar el archivo antes de que  se haya 'serializado con este metodo

        Dim fs As New FileStream(strPath, FileMode.OpenOrCreate)

        ' Establezco el formato en modo binario para poder guardarlo.

        Dim formatter As New BinaryFormatter

        Try

            ' Guardo los datos de la clase en el archivo especificado, para crear el contenedor

            formatter.Serialize(fs, myProps)
            fs.Close()

        Catch ex As SerializationException

            MessageBox.Show(ex.StackTrace, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try

    End Sub


    Friend Function Deserialize(ByVal strPath As String) As FileClass

        ' Creo un  filestream para poder abrir el archivo existente, que en este caso 
         'seria el archivo contenesor

        Dim fs As New FileStream(strPath, FileMode.Open)

        ' creo una instancia de la clase FileClass

        Dim myProps As FileClass
        myProps = New FileClass

        Try

            ' Estableco el formato en modo binario

            Dim formatter As New BinaryFormatter

            ' deserialize los datos almacenados en el archivo contenedor

            myProps = formatter.Deserialize(fs)
            fs.Close()

            'Retorno los datos y listo
            Return myProps

        Catch ex As SerializationException

            MessageBox.Show(ex.StackTrace, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return myProps

        End Try

    End Function
End Module
Bueno espero que les sea util, ya que yo lo utilizo muy a menudo.
  #152 (permalink)  
Antiguo 17/06/2009, 19:10
Avatar de Keyenight  
Fecha de Ingreso: febrero-2009
Ubicación: En la PC usando VB
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: FAQ´S del foro de Net

Tema: Encriptación {WINDOWS FORM}
Pregunta: ¿Comó Encripto un String?
Respuesta: Puedes usar estas funciones que cree de encriptación muy efectivas y cortas aqui les dejo el codigo:

Función complementaria
Código vb:
Ver original
  1. Function Invert(ByVal value As String) As String
  2.         Dim i As Integer, _
  3.         value2 As String = value
  4.         value = Nothing
  5.         For i = value2.Length To 1 Step -1
  6.             value = value & Mid(value2, i, 1)
  7.         Next
  8.         value2 = Nothing
  9.         Return value
  10.     End Function

Encriptación ASCII
Código vb:
Ver original
  1. Function EncriptEx(ByVal text As String) As String
  2.         EncriptEx = New String(Nothing)
  3.         Dim Null As String = Nothing
  4.         For Each i As String In text
  5.             Select Case Asc(i)
  6.                 Case 10 To 99
  7.                     Null = "0"
  8.                 Case 100 To 255
  9.                     Null = Nothing
  10.             End Select
  11.             EncriptEx = EncriptEx & Null & Asc(i)
  12.         Next
  13.         Return Invert(EncriptEx)
  14.     End Function
  15.  
  16.     Function DencriptEx(ByVal text As String) As String
  17.         DencriptEx = New String(Nothing)
  18.         text = Invert(text)
  19.         For i As Long = 1 To Len(text) Step 3
  20.             DencriptEx = DencriptEx & Chr(Mid(text, i, 3))
  21.         Next
  22.         Return DencriptEx
  23.     End Function

Encriptación ASCII con HEXADECIMAL
Código vb:
Ver original
  1. Function Encript(ByVal text As String) As String
  2.         Encript = Nothing
  3.         For Each i As String In text
  4.             Encript = Encript & Hex(CInt(Asc(i) & "0"))
  5.         Next
  6.         Return Invert(Encript)
  7.     End Function
  8.  
  9.     Function Dencript(ByVal text As String) As String
  10.         Dim ik As Long
  11.         text = Invert(text)
  12.         Dencript = Nothing
  13.         For i As Integer = 1 To text.Length Step 3
  14.             ik = CInt("&H" & Mid(text, i, 3))
  15.             If ik > 255 Then
  16.                 ik = ik / 10
  17.             End If
  18.             Dencript = Dencript & Chr(ik)
  19.         Next
  20.         Return Dencript
  21.     End Function

Espero que les haya sido de utilidad...

Última edición por Keyenight; 17/06/2009 a las 19:20
  #153 (permalink)  
Antiguo 29/07/2009, 20:17
Avatar de Keyenight  
Fecha de Ingreso: febrero-2009
Ubicación: En la PC usando VB
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: FAQ´S del foro de Net

Tema: Windows Form
Pregunta: ¿Como libero RAM?
Respuesta: Recuerda que la RAM es la memoria temporal donde las aplicaciones que esten corriendo guardan informacion mientras se ejecutan, liberar la memoria implica sobrescribir la información existente y solo se sobrescribira la informacion sin dueño ya que cada proceso activo defendera sus datos.
Ahora la forma correcta de liberar la memoria con visual basic es la siguiente; declarar una varible con un buffer tan grande como la memoria ocupada en nuestra RAM asi la información que haya quedado guerfana se sobrescribira y la que tenga dueño no le pasara nada; así:
Código vb:
Ver original
  1. Public i As String = Space(xxxx)
  2. i = Space(0)
  3. i = Nothing
Donde primero declaramos i con un buffer tan grande como la memoria ocupada en bytes se logra restando lo total menos lo libre, la PC se pondrá lenta debido al alto uso de procesador y llenará toda la memoria byte a byte desde 0 hasta la cantidad ordenada para el buffer de i, luego declaramos que el buffer sera 0 así que dejamos guarfana todo ese espacio que estamos ocupando en la memoria para despues liberarlo con i = Nothing; así toda la informacion innecesaria se elimino de la RAM y obviamente la liberamos; Espero que les haya servido
  #154 (permalink)  
Antiguo 13/11/2009, 09:28
Avatar de gakutaru  
Fecha de Ingreso: agosto-2005
Ubicación: frente a mi NtbK
Mensajes: 239
Antigüedad: 18 años, 8 meses
Puntos: 6
Respuesta: FAQ´S del foro de Net

Tema ASP.NET vb
Pregunta Como puedo subir y descargar archivos de la base de datos?
Respuesta http://www.forosdelweb.com/f29/uploa...net-vb-753039/
  #155 (permalink)  
Antiguo 27/11/2009, 08:34
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: FAQ´S del foro de Net

Tema: Multiples direccion api google maps c#
Pregunta: como mostrar multiples direcciones desde un string[]
Respuesta:

Code behind
Código:
        string[] Locations = { "0574 Oslo, Norge", "5143 Fyllingsdalen, Norge", "5561 Bokn, Norge", "2006 Løvenstad, Norge", "2410 Hernes, Norge", "1388 Borgen, Norge", "0674 Oslo, Norge", "3880 Dalen, Norge", "3036 Drammen, Norge", "0986 Oslo, Norge", "1363 Høvik, Norge", "1178 Oslo, Norge", "0971 Oslo, Norge", "6789 Loen, Norge", "1152 Oslo, Norge", "4017 Stavanger, Norge", "4900 Tvedestrand, Norge", "6869 Hafslo, Norge", "2750 Gran, Norge" };


                js.Text = @"<script type='text/javascript'>
                       function initialize() {
                        var lat;
                         var map = new GMap2(document.getElementById('mapsat'));
                         map.setCenter(new GLatLng(59.913820, 10.738741), 5);
                             map.addControl(new GMapTypeControl());
                            map.addControl(new GLargeMapControl());
                            map.addControl(new GScaleControl());
                         showAddress(map);
                        }
                    function showAddress(map) {     
                        var miIcono = new GIcon(G_DEFAULT_ICON);
                            miIcono.image = '../../images/for_sale.png';
   
                        geocoder = new GClientGeocoder();
                        if (geocoder) {";

        for (int idx = 0; idx < Locations.Length ; idx++)
        {
                Label1.Text += idx.ToString() + "-" + Locations[idx] + "<br>";
                js.Text += @"
                        geocoder.getLatLng('" + Locations[idx] + @"', function(point) {
                                alert(point+' - " + Locations[idx] + @"')
                                var marker = new GMarker(point,miIcono);
                                map.addOverlay(marker);
                                GEvent.addListener(marker, 'mouseover', function (){    marker.openInfoWindowHtml('" + idx.ToString() + "-" + Locations[idx] + @"');  })                              

                            });
                           
                        ";
                

        }
        js.Text += @"}}</script>";
maps.aspx
Código:
<head id="Head1" runat="server">
   <title>Multiples Direcciones en Google Map </title>
     <!--Google API reference-->
     <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=tuKey" type="text/javascript"></script>

</head>
    <body onload="initialize()">
        <form id="form1" runat="server">
       <asp:Panel ID="Panel1" runat="server">
           <!-- aca definimos un asp:literal para mostrar el javascript -->
           <asp:Literal ID="js" runat="server"></asp:Literal>
           <table >
            <tr>
                <td style="vertical-align:top">Label1<br /><asp:Label runat="server" ID="Label1"></asp:Label></td>
                <td><div id="mapsat" style="width: 600px; height: 600px; margin-bottom: 2px;"></div></td>
            </tr>
        </table>           
           
        </asp:Panel> 
        </form>

    </body>
  #156 (permalink)  
Antiguo 08/03/2010, 13:44
 
Fecha de Ingreso: febrero-2010
Ubicación: Sonora, Mexico
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: FAQ´S del foro de Net

Tema: Datagrid,FTP
Pregunta: ¿Es posible usar como datasources archivos que se encuentren en un FTP para posteriormente enviarlos a un datagrid?
  #157 (permalink)  
Antiguo 08/03/2010, 16:27
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Respuesta: FAQ´S del foro de Net

Tema: Windows Forms y archivos de Oficematica
Pregunta: Si mi Microsoft.Office.Interop.* no es compatible con el Interop del cliente donde instalaste tu aplicación ¿Qué puedo hacer?
Respuesta 1: Actualiza la versión del cliente donde instalaste tu aplicación a la versión que tu tienes, por su puesto con una licencia original .
Respuesta 2: Puedes utilizar esta dll de Codeplex para realizar cualquier documento en Excel, Power Point o Doc con tan solo un tronar de dedos y un poco de paciencia
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #158 (permalink)  
Antiguo 16/07/2010, 21:50
Avatar de gakutaru  
Fecha de Ingreso: agosto-2005
Ubicación: frente a mi NtbK
Mensajes: 239
Antigüedad: 18 años, 8 meses
Puntos: 6
Respuesta: FAQ´S del foro de Net

Tema ASP.NET VB
Pregunta Como crear PDF on the fly utilizando la libreria PDFsharp
Respuesta http://www.forosdelweb.com/f29/aport...script-825585/
  #159 (permalink)  
Antiguo 17/06/2011, 09:59
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Respuesta: FAQ´S del foro de Net

Tema: ASP.NET
Pregunta: Cómo generar facturación electrónica CFDI
Respuesta: http://www.forosdelweb.com/f29/progr...2008-a-922070/
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #160 (permalink)  
Antiguo 26/07/2011, 12:00
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Sonrisa Respuesta: FAQ´S del foro de Net

Tema:Controles VB.Net
Pregunta:¿Como recorrer todos los controles del form?
Respuesta:
El dia de ayer me encontre con un problema que consistia en muchas lineas de codigo declaradas para cada uno de mis controles en un windows form y buscando encontre un metodo para limpiar todos los textbox de un form sin embargo me vi en el problema de que solo me funcionaba en los controles en el form y no en los que se encontraban dentro de contenedores y hoy aprendi que cada contenedor tiene sus controles independientes y si alguien tiene una estructura similar en su form esto les ayudara sin duda alguna.
Código vb:
Ver original
  1. Dim c As Control
  2. * * * * Dim g As Control
  3. * * * * Dim p As Control
  4. *
  5. * * * * For Each p In TabPage1.Controls
  6. * * * * * * If TypeOf p Is Panel Then
  7. * * * * * * * * For Each g In p.Controls
  8. * * * * * * * * * * If TypeOf g Is GroupBox Then
  9. * * * * * * * * * * * * For Each c In g.Controls
  10. * * * * * * * * * * * * * * If TypeOf c Is TextBox Then
  11. * * * * * * * * * * * * * * * * c.Enabled = True
  12. * * * * * * * * * * * * * * ElseIf TypeOf c Is ComboBox Then
  13. * * * * * * * * * * * * * * * * c.Enabled = True
  14. * * * * * * * * * * * * * * ElseIf TypeOf c Is CheckBox Then
  15. * * * * * * * * * * * * * * * * c.Enabled = True
  16. * * * * * * * * * * * * * * End If
  17. * * * * * * * * * * * * Next
  18. * * * * * * * * * * End If
  19. * * * * * * * * Next
  20. * * * * * * End If
  21. * * * * Next

como verán hago mi recorrido de controles por contenedor... yo los tengo en un tabcontrol así que comencé con mi tabpage1 después en los panel dentro de este y los groupbox dentro de este y los controles.:a dios:
  #161 (permalink)  
Antiguo 26/07/2011, 12:04
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: FAQ´S del foro de Net

Código vb:
Ver original
  1. ''La llamada
  2. For Each ctrl As Control In ObténControlesSecundarios(Me)
  3.             If Ctype(ctrl is TextBox) orElse ctype(ctrl is combobox) etc... Then
  4.                 ctrl.text = nothing
  5.             End If
  6. Next
  7.        
  8. ''El procedimiento
  9. Private Function ObtenControlesSecundarios(ByVal parent As Control) As ArrayList
  10.         Dim resultado As New ArrayList()
  11.         For Each ctrl As Control In parent.Controls
  12.             ' Agregue este control al resultado.
  13.            resultado.Add(ctrl)
  14.             ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  15.            resultado.AddRange(ObténControlesSecundarios(ctrl))
  16.         Next
  17.         Return resultado
  18. End Function
  #162 (permalink)  
Antiguo 26/07/2011, 12:06
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: FAQ´S del foro de Net

Tema lambda extensión codigo anterior
Pregunta Recursión
Respuesta Simplificación de codigo

Código vb:
Ver original
  1. ''La llamada
  2. For Each ctrl As Control In ObténControlesSecundarios(
  3.                                         Function ObtenControlesSecundarios(ByVal parent As Control) As ArrayList
  4.                                         Dim resultado As New ArrayList()
  5.                                         For Each ctrl As Control In parent.Controls
  6.                                                 ' Agregue este control al resultado.
  7.                                                 resultado.Add(ctrl)
  8.                                                 ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  9.                                                 resultado.AddRange(ObténControlesSecundarios(ctrl))
  10.                                             Next
  11.                                             Return resultado
  12.                                         End Function)
  13.  
  14.  
  15.             If Ctype(ctrl is TextBox) orElse ctype(ctrl is combobox) etc... Then
  16.                 ctrl.text = nothing
  17.             End If
  18. Next

Última edición por HaverRamirez; 26/07/2011 a las 14:35
  #163 (permalink)  
Antiguo 30/03/2013, 14:21
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta

Por favor:

Necesito un link que me indique como mostrar en web form visual csharp.net
un registro de una base de datos
gracias
  #164 (permalink)  
Antiguo 30/01/2017, 10:05
Avatar de nacker_1  
Fecha de Ingreso: diciembre-2011
Ubicación: Catalunya
Mensajes: 145
Antigüedad: 12 años, 5 meses
Puntos: 15
Respuesta: FAQ´S del foro de Net

Me viene de perlas, gracias por la información :)
__________________
Camisetas y equipaciones de futbol baratas y la mejor alternativa a rojadirecta.

Etiquetas: faq
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 27 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:40.