Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Xrage87 en 22 Noviembre 2008, 15:19 pm



Título: Rellenar una matríz desde un txt externo
Publicado por: Xrage87 en 22 Noviembre 2008, 15:19 pm
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


Título: Re: Rellenar una matríz desde un txt externo
Publicado por: cassiani en 22 Noviembre 2008, 17:36 pm
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


Título: Re: Rellenar una matríz desde un txt externo
Publicado por: BlackZeroX en 22 Noviembre 2008, 23:52 pm
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
  1. Private Type VECTOR
  2.    Xx As Single
  3.    Yy As Single
  4.    Zz As Single
  5. End Type
  6.  
  7. Private Type VERTEX
  8.    Nor As VECTOR
  9.    Pos As VECTOR
  10. End Type
  11.  
  12. Private Type POLYGON
  13.    Verts(2) As VERTEX
  14. End Type
  15.  
  16. Private polyData() As POLYGON
  17.  
  18.  
  19.  
  20. Private Sub Form_Load()
  21.    randomize
  22.    ReDim polyData(10)
  23.    Dim FILE As Integer: FILE = FreeFile
  24.  
  25.    For i = 0 To 10 Step 1
  26.        For a = 0 To 2 Step 1
  27.            polyData(i).Verts(a).Nor.Xx = a * 1 + b + Int(Rnd(1) * 100)
  28.            polyData(i).Verts(a).Nor.Yy = a * 1 + b + Int(Rnd(1) * 100)
  29.            polyData(i).Verts(a).Nor.Zz = a * 1 + b + Int(Rnd(1) * 100)
  30.            polyData(i).Verts(a).Pos.Xx = a * 1 + b + Int(Rnd(1) * 100)
  31.            polyData(i).Verts(a).Pos.Yy = a * 1 + b + Int(Rnd(1) * 100)
  32.            polyData(i).Verts(a).Pos.Zz = a * 1 + b + Int(Rnd(1) * 100)
  33.        Next a
  34.    Next i
  35.  
  36.    visualisar Text1
  37.    Open "d:\aaa.txt" For Binary As FILE
  38.        Put #FILE, , polyData()
  39.    Close #FILE
  40.    'vasiamos todos los datos
  41.    For i = 0 To 10 Step 1
  42.        For a = 0 To 2 Step 1
  43.            polyData(i).Verts(a).Nor.Xx = 0
  44.            polyData(i).Verts(a).Nor.Yy = 0
  45.            polyData(i).Verts(a).Nor.Zz = 0
  46.            polyData(i).Verts(a).Pos.Xx = 0
  47.            polyData(i).Verts(a).Pos.Yy = 0
  48.            polyData(i).Verts(a).Pos.Zz = 0
  49.        Next a
  50.    Next i
  51.    'Fin
  52.    visualisar Text2
  53.    Open "d:\aaa.txt" For Binary As FILE
  54.        Get #FILE, , polyData
  55.    Close FILE
  56.    visualisar Text3
  57. End Sub
  58. Sub visualisar(textbox As textbox)
  59.    For i = 0 To 10 Step 1
  60.        For a = 0 To 2 Step 1
  61.            textbox = textbox & vbNewLine & polyData(i).Verts(a).Nor.Xx
  62.            textbox = textbox & vbNewLine & polyData(i).Verts(a).Nor.Yy
  63.            textbox = textbox & vbNewLine & polyData(i).Verts(a).Nor.Zz
  64.            textbox = textbox & vbNewLine & polyData(i).Verts(a).Pos.Xx
  65.            textbox = textbox & vbNewLine & polyData(i).Verts(a).Pos.Yy
  66.            textbox = textbox & vbNewLine & polyData(i).Verts(a).Pos.Zz
  67.        Next a
  68.    Next i
  69. End Sub
  70.  

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