Visual Basic - leer .txt y guardarlo en una matriz

Life is soft - evento anual de software empresarial
 
Vista:

leer .txt y guardarlo en una matriz

Publicado por Andelsai (2 intervenciones) el 15/07/2004 12:01:13
Hola Amig@s. Tengo un problema, soy nuevo en VB, pero necesito para mi proyecto manipular un fichero ascii.
Tengo un fichero en el que guardo una serie de valores numericos agrupados en filas y columnas separados por returns y espacios en blanco.
El caso es que yo quiero leer el fichero y que las 3 primeras filas, que son un numero cada una, me las guarde en 3 variables distintas pero numericas, y el resto en una matriz, pues estos valores estan dispuestos en columnas separadas por espacios.
Se que en VB se puede leeer un fichero por filas con el Line Input, pero para la matriz?
Alguna solucion?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:leer .txt y guardarlo en una matriz

Publicado por Cecilia Colalongo (3116 intervenciones) el 15/07/2004 16:23:30
Puedes leer el archivo, pasarlo a un String y luego manipularlo por filas y Columnas, por ejemplo:

Archivo = FileToString("MiArchivo.txt")
Lineas = Split(Archivo,vbCrLf)

Para las tres primeras variables numéricas:

Var1 = Lineas(0)
Var2 = Lineas(1)
Var3 = Lineas(2)

Para la matriz:

Dim Matriz() As Variant

Columnas = Split(Lineas(3)," ")

ReDim Matriz(0 To UBound(Lineas)-3,UBound(Columnas))

For i = LBound(Lineas) +3 To UBound(Lineas)
Columnas(j)=Split(Lineas(i)," ")
For j = LBound(Columnas) To UBound(Columnas)
Matriz(i-3,j) = Columnas(j)
Next j
Next i

La función para pasar un archivo a un String es:

Public Function FileToString(FileName As String) As String
On Error GoTo ErrorHandler

Dim hlngFile As Long, strFile As String

hlngFile = FreeFile

Open FileName For Binary Access Read As hlngFile

FileToString = vbNullString

strFile = String(FileLen(FileName), " ")

Get hlngFile, , strFile

Close hlngFile

FileToString = strFile

Exit Function

ErrorHandler:
FileToString = Empty
End Function

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer .txt y guardarlo en una matriz

Publicado por tecniCam (186 intervenciones) el 15/07/2004 21:55:47
Sólo saludar a Cecilia.
Veo que sigues tan acertada en tus respuestas como siempre.
Cordiales saludos.
tecniCam
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de janson

RE:leer .txt y guardarlo en una matriz

Publicado por janson (2 intervenciones) el 23/07/2015 05:15:35
soy nuevo en vb.net, he estado mirando y buscando información, de como realizar esta labor,

la idea es seleccionar un archvo de txt y cargarlo en una matriz y asi cargarlo en una bd oracle

pero creo que no he entendido bien los conceptos, para aplicarlos de forma correcta, en la función, debido a esto acudo a ustedes, en busca de orientación o en su defecto me indiquen donde estoy errando,,, de antemano mil gracias, por la atención prestada, he tratado de aplicar el concepto pero no he tenido suerte

Dim ruta As String = ""
'almecena las lineas de texto leida
Dim lineatexto As String = ""
'VECTOR ALMACENA LA LINEA Y LAS SEPARA, DELIMITADOR
Dim filas() As String

Dim columnas() As String

Dim matriz(,) As Object

ofd.InitialDirectory = "c:\temp\"
ofd.Filter = "txt files (*.txt)|*.txt" 'Formatos permitidos en objeto
ofd.FilterIndex = 2
ofd.Title = "SELECCIONE EL DOCUMENTO DE LAS ASIGNACIONES"
ofd.Multiselect = False
ofd.RestoreDirectory = True

If (ofd.ShowDialog() = Windows.Forms.DialogResult.OK) Then

ruta = ofd.FileName
End If

'SI EXISTE EL ARCHIVO
If System.IO.File.Exists(ruta) = True Then

Dim VAR_LEER As New StreamReader(ruta)

Do While VAR_LEER.Peek <> -1

lineatexto = VAR_LEER.ReadLine()

filas = Split(lineatexto, vbCrLf)

columnas = Split(filas, delimitador)


ReDim matriz(0 To UBound(filas), UBound(columnas))
Dim i, j As Integer
For i = LBound(filas) To UBound(filas)
columnas(j) = Split(filas(i), delimitador)
For j = LBound(columnas) To UBound(columnas)
matriz(i, j) = columnas(j)
tabla.Items.Add(matriz(i, j))
Next j
Next i

Loop

Else
MsgBox("ARCHIVO NO EXISTE", MsgBoxStyle.Critical, "CSV NO EXISTE")
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar