Guardar muchos datos en una sola linea de un txt para su lectura

Iniciado por cael1011, 29 Septiembre 2016, 04:54 AM

0 Miembros y 1 Visitante están viendo este tema.

cael1011

Busco la forma de guardar uno datos en un txt los cuales deseo que este en
una sola fila, ejemplo de la recolección para guardar.

TextBox1 = 1 TextBox2 = Diego Santos TextBox3 = 18 sur 1023 TextBox4 = "ruta de sus archivos"

1 Diego Santo 18 sur 1023 D:\archivos_sr_Juan_S\
2 Carlos Herrera pueblo nuevo 1023 D:\archivos_sr_Carlos_H\

y las siguientes lineas los otros datos de las personas, no se como juntarlos, después
separarlos también para su lectura.

Yo utilizo un listbox, ahora busco de los TextBox guardar para después leerlo por separada
con un ListBox y en la selección separarlos en los TextBox

el Código que utilizo para guardar con los ListBox es:




Código (vbnet) [Seleccionar]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Dim oSW As New StreamWriter(TextBox5.Text & ".txt")
        Dim i As Integer
        For i = 0 To ListBox1.Items.Count - 1
            Dim Linea = ListBox100.Items(i).ToString()
            oSW.WriteLine(Linea)
            oSW.Flush()

        Next


        Dim Archivo As System.IO.FileInfo = New FileInfo(TextBox5.Text & ".txt")
        Me.ListBox1.Items.Clear()
        Try
            Dim abrir As StreamReader = Archivo.OpenText
            Dim linea As String
            Do While abrir.Peek() > 0
                linea = abrir.ReadLine()
                Me.ListBox1.Items.Add(linea)


            Loop
            abrir.Close()
        Catch ex As SystemException
            MsgBox(ex.Message, MsgBoxStyle.OkOnly, "ERROR")
        End Try


End Sub




Ahora busco como de los texbox guardar todos los datos en una sola linea para después verlos en en listbox y
separarlos cada uno en sus texbox, alguien me puede ayudar.




Eleкtro

#1
Cita de: cael1011 en 29 Septiembre 2016, 04:54 AMBusco la forma de guardar uno datos en un txt los cuales deseo que este en
una sola fila, ejemplo de la recolección para guardar.

TextBox1 = 1 TextBox2 = Diego Santos TextBox3 = 18 sur 1023 TextBox4 = "ruta de sus archivos"

1 Diego Santo 18 sur 1023 D:\archivos_sr_Juan_S\
2 Carlos Herrera pueblo nuevo 1023 D:\archivos_sr_Carlos_H\

Una manera de juntar la información en una sola linea sería la siguiente:
Código (vbnet) [Seleccionar]
Dim str As String = String.Format("{0};{1};{2};{3}", TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text)

lo que producirá el siguiente string CSV-like:
índice;Nombre;Dirección?;C:\Ruta

y entonces podrás identificar cada campo saparándolos mediante el caracter delimitador ";":
Código (vbnet) [Seleccionar]
Dim fields As String() = str.Split(";"c)

Dim index As String = fields(0)
Dim name As String = fields(1)
Dim address As String = fields(2)
Dim dirPath As String = fields(3)













...aunque algo mucho más apropiado sería definir un type/contenedor personalizado donde almacenar dicha información, y serializarlo en lugar de guardarlo en un archivo de texto...

Código (vbnet) [Seleccionar]
<Serializable>
<XmlRoot("PersonInfo")>
Public NotInheritable Class PersonInfo

   <XmlElement("Index")> Public Index As Integer
   <XmlElement("Name")> Public Name As String
   <XmlElement("Address")> Public Address As String
   <XmlElement("Dirpath")> Public Dirpath As String

   <DebuggerNonUserCode>
   Private Sub New()
   End Sub

   <DebuggerStepThrough>
   Public Sub New(ByVal index As Integer, ByVal name As String, ByVal address As String, ByVal dirpath As String)
       Me.Index = index
       Me.Name = name
       Me.Address = address
       Me.Dirpath = dirpath
   End Sub

   <DebuggerStepThrough>
   Public Overrides Function ToString() As String
       Return String.Format("{0};{1};{2};{3}", Me.Index, Me.Name, Me.Address, Me.Dirpath)
   End Function

End Class


+

Código (vbnet) [Seleccionar]
Public Module PersonInfoExtensions

   <Extension>
   <DebuggerStepThrough>
   Public Sub SerializeTo(ByVal sender As List(Of PersonInfo), ByVal filepath As String)
       Dim serializer As New XmlSerializer(GetType(List(Of PersonInfo)))
       Dim bufferSize As Integer = 8192 ' 8 KB.

       Using fs As New FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.Read, bufferSize)
           serializer.Serialize(fs, sender)
       End Using
   End Sub

   <Extension>
   <DebuggerStepThrough>
   Public Sub DeserializeFrom(ByRef sender As List(Of PersonInfo), ByVal filepath As String)
       Dim serializer As New XmlSerializer(GetType(List(Of PersonInfo)))
       Dim bufferSize As Integer = 8192 ' 8 KB.

       Using fs As New FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize)
           sender = DirectCast(serializer.Deserialize(fs), List(Of PersonInfo))
       End Using
   End Sub

End Module


Ejemplo de serialización:
Código (vbnet) [Seleccionar]
Dim personInfo1 As New PersonInfo(CInt(TextBox1.Text), TextBox2.Text, TextBox3.Text, TextBox4.Text)
Dim personInfo2 As New PersonInfo(2, "Pepito", "24 norte 1023", "C:\Ruta de archivos")

Dim personInfoList As New List(Of PersonInfo)
personInfoList.AddRange({personInfo1, personInfo2})
personInfoList.SerializeTo("C:\Data.xml")


lo que producirá un documento Xml como este:
Código (xml) [Seleccionar]
<?xml version="1.0"?>
<ArrayOfPersonInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <PersonInfo>
   <Index>1</Index>
   <Name>Diego Santos</Name>
   <Address>18 sur 1023</Address>
   <Dirpath>C:\Ruta de archivos</Dirpath>
 </PersonInfo>

 <PersonInfo>
   <Index>2</Index>
   <Name>Pepito</Name>
   <Address>24 norte 1023</Address>
   <Dirpath>C:\Ruta de archivos</Dirpath>
 </PersonInfo>

</ArrayOfPersonInfo>


Ejemplo de deserialización:
Código (vbnet) [Seleccionar]
Dim personInfoList As New List(Of PersonInfo)
personInfoList.DeserializeFrom("C:\Data.xml")

For Each personInfo As PersonInfo In personInfoList
   Console.WriteLine(personInfo.ToString()) ' ToString() = índice;Nombre;Dirección?;C:\Ruta
Next personInfo


Resultado de ejecución del ejemplo de deserialización:
Citar1;Diego Santos;18 sur 1023;C:\Ruta de archivos
2;Pepito;24 norte 1023;C:\Ruta de archivos

Saludos








cael1011

Muchas gracias, veo te tomaste tu tiempo para ayudarme la verdad soy principiante voy a practicar y analizar tu código poco le entiendo, muchas gracias te agradezco, saludos.