Clarion - Leer txt campos separados por |

 
Vista:
sin imagen de perfil

Leer txt campos separados por |

Publicado por Miguel Santillan (2 intervenciones) el 06/01/2012 15:25:28
Tengo un archivo de texto cuyos campos estan separados por | y son de largo variable. Debo leer cada registro y grabar los campos en un archivo tps.
Hasta ahora siempre he leido archivos de texto de largo fijo.
Si alguien me puede dar una mano con esto se lo agradecería.

Saludos.
Miguel Santillan
Pergamino (Bs.As) Argentina
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

Leer txt campos separados por |

Publicado por Pedro (59 intervenciones) el 06/01/2012 20:16:31
Hola Miguel
Yo no soy experto en Clarion ni nada parecido,
Pero te tiro una idea

la funcion instring te devuelve la posicion en que se encuentra el |
entonces
desde la pos 1 hasta el retorno -1 tenes el primer campo
y despues podes quitar esos caracteres del string o empezar a buscar desde la pos del | en adelante

Espero te sirva

si podes , avisa como lo terminaste resolviendo
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
sin imagen de perfil

Leer txt campos separados por |

Publicado por Marcelo Madelon (572 intervenciones) el 06/01/2012 22:00:17
Miguel

Me parece que la idea de Pedro es buena.

! Pienso que debes crear tantos grupos como | tengas y dentro de cada gupo una variable con dimension
Caracter1 (Group)
Char1 = '' (Dimension = 40) ! o el tamaño máximo que pueda llegar a tomar

Caracter2 (Group)
Char2 = '' (Dimension = 40)

Caracter3 (Group)
Char3 = '' (Dimension = 40)

Caracter4 (Group)
Char4 = '' (Dimension = 40)

X# = 0
I# = 0
C# = 0
B# = 0
Loop ! Loop Continuo
X# += 1
IF X# > 160 ! el largo maximo del registro
Break ! Sale del loop
END
IF SUB(REG:Registro,X#,1) = '|' ! me fijo si encontre el fin del primer campo
C# += 1 ! Sumo uno para saber a cual debo cargar
else
Case C#
of 1 ! Cargo
Char1[X#] = SUB(REG:Registro,X#,1)
of 2
Char2[X#] = SUB(REG:Registro,X#,1)
of 3
Char3[X#] = SUB(REG:Registro,X#,1)
of 4
Char4[X#] = SUB(REG:Registro,X#,1)
end
END
END

No lo probe, pero quizas te sirva para crear la solucion. Avisa si te sirvio.

Saludos
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