Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: programatrix en 1 Abril 2014, 00:14 am



Título: VB6, acceso a fichero
Publicado por: programatrix en 1 Abril 2014, 00:14 am
Hola, ¿que tal?
He puesto este mensaje por si me podriaís dar referencia de instrucciones o código de como puedo leer en un fichero con cosas asi:
Citar
Catheter 6
   Begin
      Number of Points
         39

      Point 0
      Begin
         Coordinates
            67.336888 52.054878 -2.064480
         Status
            Active
         Weight
            0.303272
      End
End
Necesito tomar esos datos del fichero para trabajar en ellos, realmente es una parte de un trabajo en un problema físico de calculo de dosis en tratamientos de cancer. (Son varios cateter y por cateter 39 puntos con ese formato)
Y bueno si me podeís dar bibliografía de acceso a ficheros o códigos para leer datos como estos estaría muy agradecido.
Muchas gracias :)


Título: Re: VB6, acceso a fichero
Publicado por: Danyfirex en 1 Abril 2014, 14:53 pm
Hola. la verdad no entiendo ni papa.

te refieres a leer un archivo?

Código
  1. Private Sub Form_Load()
  2. Dim sDatos As String
  3. Open "ruta_del_archivo" For Input As #1
  4. sDatos = Input(LOF(1), #1)
  5. Close #1
  6. MsgBox (sDatos)
  7. End Sub
  8.  


saludos


Título: Re: VB6, acceso a fichero
Publicado por: programatrix en 1 Abril 2014, 15:28 pm
Me refiero a un fichero con ese formato el cual elabora un programa planificador, poder desde un programa mio leerlo y obtener posiciones de la fuente radiactiva y tiempo en dicha posición.
Hay aproximadamente 111 posiciiones con su tiempo, y quiero leer todo eso pasando practicamente de otros datos.


Título: Re: VB6, acceso a fichero
Publicado por: Mad Antrax en 1 Abril 2014, 16:28 pm
Si es con ese formato, yo me posicionaría en el archivo con InStr() y Split()


Título: Re: VB6, acceso a fichero
Publicado por: 79137913 en 1 Abril 2014, 20:18 pm
HOLA!!!

Yo leeria todo con un:
Código
  1. Dim sDatos As String
  2. Dim Arr () As String
  3. Open "ruta_del_archivo" For Input As #1
  4. sDatos = Input(LOF(1), #1)
  5. Close #1
  6. Split(sDatos,vbNewLine)
  7. For x = 0 To Ubound(Arr)
  8.    Arr(x) = LTrim(Arr(x))
  9. Next

Asi en cada punto del array tenes una instruccion sin espacios

GRACIAS POR LEER!!!


Título: Re: VB6, acceso a fichero
Publicado por: programatrix en 9 Abril 2014, 23:12 pm
Código:
Open App.Path & "\Datos\test.cha" For Input As #1
 leercoordenadas = False
 leertiempos = False
 buscartiempos = False
  Do While Not EOF(1)
       
        'Lee la linea
        Line Input #1, linea
       
          If leertiempos = True Then
       
     
       List2.AddItem linea
     
       leertiempos = False
       End If
       If InStr(linea, "Weight") > 0 And buscartiempos = True Then
       leertiempos = True
       buscartiempos = False
       End If
     
         
         If leercoordenadas = True Then
       List1.AddItem Trim(linea)
       leercoordenadas = False
       buscartiempos = True
       End If
       If InStr(linea, "Coordinates") > 0 Then
       leercoordenadas = True
       End If
       
     
    Loop
Con el siguiente código consigo que me aparezcan un listado de las coordenadas, hay unas 400
Citar
            67.336888 52.054878 -2.064480
Y otro listado de los tiempos:
Citar
            0.303272
Y uso la función trim para quitar los espacios en blanco pero no consigo hacerlos desaparecer, ni tratar el texto ni nada no entiendo :S
Porque ya teniendo esas cadenas deberían ser fáciles de tratar, ¿No?


Título: Re: VB6, acceso a fichero
Publicado por: MCKSys Argentina en 10 Abril 2014, 02:41 am
Y uso la función trim para quitar los espacios en blanco pero no consigo hacerlos desaparecer

Revisa la función replace: http://www.vb6.us/tutorials/vb6-string-functions (http://www.vb6.us/tutorials/vb6-string-functions)

Saludos!


Título: Re: VB6, acceso a fichero
Publicado por: programatrix en 15 Abril 2014, 23:59 pm
Al final resolvi el problema, dejo parte del código por si a alguien le es útil, este código se encarga de ver cuantos puntos existen en el fichero para poder tomar los datos en una matriz posteriormente de esos elementos:
Código:
leerpcateter = False
filasmatriz = 0
Open directorio & "\LiveLoading.cha" For Input As #2
Do While Not EOF(2)
Line Input #2, linea


If leerpcateter = True Then
pcateter = CDbl(linea)

leerpcateter = False
End If
If InStr(linea, "Number of Points") > 0 Then
leerpcateter = True
End If

If pcateter > 0 Then
filasmatriz = filasmatriz + pcateter
pcateter = 0
End If
Loop

Close #2

C = filasmatriz