Rellenar una matríz desde un txt externo

Iniciado por Xrage87, 22 Noviembre 2008, 15:19 PM

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

Xrage87

Lo que quiero hacer es rellenar una matriz previamente creada en el programa, desde un archivo txt en el que estarían almacenados los datos. Los datos dentro del txt los puedo poner como más convenga para hacerlo.

Muchas gracias

cassiani

Tendrás que determinar como harás la extracción de las subcadenas para asignarle luego el valor correspondiente a la matriz, por ejemplo, luego de obtener el contenido del archivo, puedes usar el split para separarlo por líneas y asignar los valores resultantes o separarlo por cualquier caracter, como gustes.

El manejo de archivos se ha tratado varias veces, usa el buscador, lo demás es pan comido  :xD

BlackZeroX

#2
se me ocurre mostrarte el como hacerlo sin tanta bronca e inclusive con tipos aca te van (el Typo de datos Polygon usa matrix je) este es el codigo que uso yo para leer archivos de tipo Mesh (como los .x que genera Studio 3D)

agrega 3 textbox con opcion multilinea=true ejecutalo y ve las acciones

1.- se crean los datos aleatoriamente
2.- se visualisan los datos (los generados aleatoriamente)
3.- se graban los datos en un archivo 'X'.
4.- se descarga de memoria los datos.
5.- se visualisan los datos (oviamente no hay ninguno)
5.- se vuelven a cargar los datos
6.- se visualisan los datos (los que se cargaron en el archivo 'X')

Código (vb) [Seleccionar]

Private Type VECTOR
    Xx As Single
    Yy As Single
    Zz As Single
End Type

Private Type VERTEX
    Nor As VECTOR
    Pos As VECTOR
End Type

Private Type POLYGON
    Verts(2) As VERTEX
End Type

Private polyData() As POLYGON



Private Sub Form_Load()
    randomize
    ReDim polyData(10)
    Dim FILE As Integer: FILE = FreeFile
   
    For i = 0 To 10 Step 1
        For a = 0 To 2 Step 1
            polyData(i).Verts(a).Nor.Xx = a * 1 + b + Int(Rnd(1) * 100)
            polyData(i).Verts(a).Nor.Yy = a * 1 + b + Int(Rnd(1) * 100)
            polyData(i).Verts(a).Nor.Zz = a * 1 + b + Int(Rnd(1) * 100)
            polyData(i).Verts(a).Pos.Xx = a * 1 + b + Int(Rnd(1) * 100)
            polyData(i).Verts(a).Pos.Yy = a * 1 + b + Int(Rnd(1) * 100)
            polyData(i).Verts(a).Pos.Zz = a * 1 + b + Int(Rnd(1) * 100)
        Next a
    Next i
   
    visualisar Text1
    Open "d:\aaa.txt" For Binary As FILE
        Put #FILE, , polyData()
    Close #FILE
    'vasiamos todos los datos
    For i = 0 To 10 Step 1
        For a = 0 To 2 Step 1
            polyData(i).Verts(a).Nor.Xx = 0
            polyData(i).Verts(a).Nor.Yy = 0
            polyData(i).Verts(a).Nor.Zz = 0
            polyData(i).Verts(a).Pos.Xx = 0
            polyData(i).Verts(a).Pos.Yy = 0
            polyData(i).Verts(a).Pos.Zz = 0
        Next a
    Next i
    'Fin
    visualisar Text2
    Open "d:\aaa.txt" For Binary As FILE
        Get #FILE, , polyData
    Close FILE
    visualisar Text3
End Sub
Sub visualisar(textbox As textbox)
    For i = 0 To 10 Step 1
        For a = 0 To 2 Step 1
            textbox = textbox & vbNewLine & polyData(i).Verts(a).Nor.Xx
            textbox = textbox & vbNewLine & polyData(i).Verts(a).Nor.Yy
            textbox = textbox & vbNewLine & polyData(i).Verts(a).Nor.Zz
            textbox = textbox & vbNewLine & polyData(i).Verts(a).Pos.Xx
            textbox = textbox & vbNewLine & polyData(i).Verts(a).Pos.Yy
            textbox = textbox & vbNewLine & polyData(i).Verts(a).Pos.Zz
        Next a
    Next i
End Sub


Al ejecutarlo se crea el archivo 'X' y al abrirlo veras algo similar a esto xP:

  ˆB  A  B  B  pB  B  ŽB  A  À@  @B  ÈA  øA  ŠB  ¬B  B  <B  ´B  XB  €@  hB  B  šB  PB  ,,B  –B  ÄB  0A  ŒB  tB  –B  ÀB  ÆB  ,B  B  ðA  xB   @  B  HB  ÐA  $B  dB  4B  ¸A  8B  ÂB  ÈB  tB  B  B  ÂB  ºB  ¨A  œB  €?  œB  tB  €B   A  €?  ¤B  ŠB   B   B  "B   B  `A  èA  PB  ŒB  "B   B  pA  šB  tB  ,B  dB  ðA  ²B  °A  ŒB  žB  `A  ŠB  ÆB  ˜A  TB  `A  A  ¢B  @A  PA  ¤B  DB  LB  ¦B  (B  ÄB  `B   B  ¬B  TB  \B  ªB  ŒB  ªB  4B  ÈB  ¼B  `A  PB  ¤B  ðA  ŠB  ÀA  ¸B  xB  àA  ˜A  ¸A  \B  ¸A  PB  PA  \B  4B  8B  |B   @  ²B  ÈA  ÆB  €?  ¨A   A  B  ,B  \B  `B  ¸B  @B  œB  A  ÂB  hB  ¢B  ºB  €B      B  ˆA  pB   B  ˆB  €?  ÄB  ®B  ¤B  $B  "B   A  ¼B  ªB   A  ¬B      \B  8B  šB  ŒB  tB  °A  À@  4B  ŒB  pA  ÂB  ÀB  °B  ¸B  À@  ŠB  |B  œB  À@  ¾B  èA  –B  ŠB  ®B  @B  €B  ¶B  ¬B   @  œB  B  ¨A
The Dark Shadow is my passion.