Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2003
guantxo guantxo is offline
Miembro
 
Registrado: may 2003
Posts: 16
Poder: 0
guantxo Va por buen camino
Wink ficheros con eof

hola amigos!!

ya estoy aki otra vez!! para daros un poko la lata!!jeejeje

weno mi problemilla es el siguiente:

estoy haciendo un programilla de traspasos de un programa a otro. el 'programa origen' me genera un TXT q recorro y voy introduciendo los datos campo a campo.
hasta aki todo korrecto!!! peroooo.....
cual es mi sorpresa cuando voy a mirar los registros y me pone siempre uno menos!!!!!

le he puesto un

while not EOF(F) do

pero resulta q en la ultima linea, m ha parecido entender, mete el EOF y por tanto la linea no m la pilla por contenerlo!!!

he ido al TXT y he introducido una linea en blanco(un return) y entonces si m lo pilla!!!!

komo hago para q m pille el EOF sin tener q editar el fichero??



muxas gracias a tod@s!!!
un saludo!!!
Responder Con Cita
  #2  
Antiguo 22-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Como haces la introduccion de datos en el fichero, con un write o un writeln?

Si el problema es el retorno de carro y utilizas write, cambialo a writeln a ver que tal

Espero te sirva
Responder Con Cita
  #3  
Antiguo 23-07-2003
guantxo guantxo is offline
Miembro
 
Registrado: may 2003
Posts: 16
Poder: 0
guantxo Va por buen camino
Talking

HOLA!

yo no hago la introduccion del fichero. la hace el 'programa origen' y realmente no se como la hace!

yo parto del fichero TXT generado por este programa y a partir de él, lo leo linea a linea (ReadLn) y voy introduciendo campo a campo.

alguna idea?

se me ha ocurrido q komo no le falta esa linea ponerla yo!
algo asi
[list=a]
if FileExists('C:\Ofipro\GesProEasy\Emp1\EXPORTA\articulos.Txt') then
begin
AssignFile(F, 'C:\Ofipro\GesProEasy\Emp1\EXPORTA\articulos.Txt');
{$I-}
//abro el archivo
Reset(F);
{$I+}
//leo la linea
ReadLn(F,c);
while not Eof(F) do
begin
ReadLn(F,c);
end;
if eof(F) then
begin
writeln(F, #13);
end;
end;[/list=a]

pero no me deja escribir xq no esta en modo escritura!!!
he probado varias cosas pero nada
Responder Con Cita
  #4  
Antiguo 23-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
para escribir en un fichero ya existente, en lugar de reset, utiliza append

de toda manera, tendria que funcionarte en bucle

while not eof(F) do

la verdad es que me tiene extrañado. He hecho la pueba de no poner un salto de linea en la ultima linea de un fichero de texto y.... me lo ha leido todo perfectamente
Responder Con Cita
  #5  
Antiguo 23-07-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Estoy seguro que el problema no está en el archivo o en delphi. Si no hay un salto de línea antes del fin de archivo no pasa nada. Veo que lees una línea antes de entrar al while que sugeris, que tampoco tiene sentido (aunque no creo que sea el origen del error, por supuesto) y que de hecho podria ocasionar errores, ya que el archivo podria existir y estar vacio.

Solo para que lo revises, la construcción debiera ser algo como:

Código:
if FileExists(NombreArchivo) Then
Begin
  AssignFile(f, NombreArchivo);
  Reset(f);
  try
    while not eof(f) do
    Begin
      Readln(f, s);
      ProcesarLaCadena(s);
    End;
  finally
    Close(f); // Importante: aunque hayan errores, siempre liberará los recursos
  end;
End;
Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 24-07-2003
guantxo guantxo is offline
Miembro
 
Registrado: may 2003
Posts: 16
Poder: 0
guantxo Va por buen camino
Talking

hola otra vez!!

asias a los dos(cadetill y jachguate) x ayudarm m ha servido de muxo.... d exo ya esta resuelto!!

cadetill estaba 'mosca' y yo tambien xq no m leia la ultima linea!!

resulta q yo hacia esto:

Reset(F);
//leia la linea
ReadLn(F, c)
while not EOF(F) do
begin
//hacia las operaciones necesarias(lectura del TXT y grabar en cada campo los datos)
//leia linea
ReadLn(F, c)
end;

leia la linea antes d entrar xq calculaba su longitud una vez entraba.
Perooo... como dijo jachguate puse la linea dentro del while justo antes d calcular su longitud y....... voilá!!! M LEYO TODO !!!!
ahora keda asi:

Reset(F);
while not EOF(F) do
begin
//leo la linea
ReadLn(F, c)
//hacia las operaciones necesarias(lectura del TXT y grabar en cada campo los datos)
end;

pero no logro entender xq, lo sabeis?asias a los dos como he dixo antes!!
Responder Con Cita
  #7  
Antiguo 24-07-2003
guantxo guantxo is offline
Miembro
 
Registrado: may 2003
Posts: 16
Poder: 0
guantxo Va por buen camino
Lightbulb

aaa se me olvidaba!!jejjeeje!!soy un poko pesao ademas d desmemoriado!

resulta q el primer caracter q m lee del TXT en cuestion, es el caracter #0.
he editado el TXT y no tiene ningun caracter al principio, incluso lo he llevado al word para ver los caracteres ocultos por si las moscas ... pero todo parece estar bien!!

puede ser q sea la marca de principio de fichero??

he sacada la cadena por pantalla y empieza asi:

'1','nsb', ....... etc

no veo q puede estar mal!

weno asias x todo!!
Responder Con Cita
  #8  
Antiguo 24-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por guantxo
he editado el TXT y no tiene ningun caracter al principio, incluso lo he llevado al word para ver los caracteres ocultos por si las moscas ... pero todo parece estar bien!!
Si lo editas con un editor hexadecimal seguro que lo ves ya que este caracter es el caracter nulo (que no tiene representación y por eso no lo ves ni en Word, ni en Bloc de Notas ni nada) , pero sí que es "leible"

PD: me alegro de que hayas solucionado el problema
Responder Con Cita
  #9  
Antiguo 25-07-2003
guantxo guantxo is offline
Miembro
 
Registrado: may 2003
Posts: 16
Poder: 0
guantxo Va por buen camino
Talking

hola !!!

gasias x todo, pero lo del caracter #0 al principio... sabes si es principio d fichero¿? xq lo pone?

lo siento si soy muy pregunton

un saludo y salud!!!

PD: asias otra vez!
Responder Con Cita
  #10  
Antiguo 25-07-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Ese caracter lo ha puesto el programa que ha generado el fichero txt. No significa que sea principio de fichero, sencillamente que el programa "creador de ficheros" lo escribe al generarlos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:56:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi