Estimados Muchas Gracias por todos sus aportes, efectivamente el tema siempre es complejo ya que mes a mes espero que el archivo venga consistente no siempre ocurre :), efectivamente siempre los datos vienen separados por ; y traen un encabezado de 80 campos, muchas veces algunas lineas también traen 81 o 82 campos me imagino que se el proceso que genera estas salidas genera uno o dos ; mas adicional lo que produce tener 2 o 3 campos mas, en definitiva yo solo tomo los 80 primeros, el resto asumo que vienen vacios ya que no están declarados en el encabezado, revisando el archivo también me di cuente que algunas lineas traían LN en los datos de texto.
Cree este código y hasta el momento me ha funcionado bien, revisa linea x linea y verifica que cada una tenga los 80 o mas campos si es asi lo traspasa a uno nuevo, en otro caso asume que la continuación de sus lineas están mas abajo y las almacena hasta cumplir con las 80 o mas.
LOCAL L_nfile,L_nSize
L_nfile=FOPEN(L_Archivotxt,0)
L_nSize=FSEEK(L_nfile, 0, 2)
IF L_nSize <= 0
=MESSAGEBOX("El Archivo Seleccionado:"+L_Archivotxt+", esta Vacio",16,"Error")
=FCLOSE(L_nfile)
RETURN
ENDIF
LOCAL L_laLinea,L_TotalElementos,L_NumeroCampos
LOCAL ARRAY L_ArrayElementos(1)
STORE 0 TO L_numeroCampos
=FSEEK(L_nfile, 0, 0)
TRY
DO WHILE !FEOF(L_nfile)
L_laLinea=FGETS(L_nfile,8192)
L_TotalElementos=ALINES(L_ArrayElementos,L_laLinea,";")
IF (L_TotalElementos>=80)
STRTOFILE(L_laLinea+crlf,L_ArchivoSalida,.t.)
ELSE
thisform.edit1.Value=thisform.edit1.Value+L_laLinea
L_numeroCampos=L_numeroCampos+L_TotalElementos
IF L_numeroCampos>=80
STRTOFILE(thisform.edit1.Value+crlf,L_ArchivoSalida,.t.)
thisform.edit1.Value=""
L_numeroCampos=0
ENDIF
ENDIF
ENDDO
IF !EMPTY(thisform.edit1.Value)
STRTOFILE(thisform.edit1.Value+crlf,L_ArchivoSalida,.t.)
ENDIF
CATCH TO oErr
=MESSAGEBOX("Error:"+oErr.Message+CHR(13)+"El Formato del Archivo Puede ser Incorrecto.",16,"Error")
ENDTRY
=FCLOSE(L_nfile)