VB6, acceso a fichero

Iniciado por programatrix, 1 Abril 2014, 00:14 AM

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

programatrix

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:
CitarCatheter 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 :)

Danyfirex

Hola. la verdad no entiendo ni papa.

te refieres a leer un archivo?

Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim sDatos As String
Open "ruta_del_archivo" For Input As #1
sDatos = Input(LOF(1), #1)
Close #1
MsgBox (sDatos)
End Sub



saludos

programatrix

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.

Mad Antrax

Si es con ese formato, yo me posicionaría en el archivo con InStr() y Split()
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

79137913

HOLA!!!

Yo leeria todo con un:
Código (vb) [Seleccionar]
Dim sDatos As String
Dim Arr () As String
Open "ruta_del_archivo" For Input As #1
sDatos = Input(LOF(1), #1)
Close #1
Split(sDatos,vbNewLine)
For x = 0 To Ubound(Arr)
    Arr(x) = LTrim(Arr(x))
Next


Asi en cada punto del array tenes una instruccion sin espacios

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

programatrix

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
Citar67.336888 52.054878 -2.064480
Y otro listado de los tiempos:
Citar0.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?

MCKSys Argentina

Cita de: Rey11 en  9 Abril 2014, 23:12 PM
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

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


programatrix

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:
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