PDA

Ver la Versión Completa : Error en lectura logs texto


alejandrowa
03-06-2003, 18:23:53
Buenas:

Tengo el siguiente problema y espero que algun compañero me ayude.

Estoy haciendo un programita para analizar logs de una central telefonica. La central telefonica me genera los del siguiente formato por ejem:

12/3/03 01 0:34 
15/5/03 01 05:33 

Como ven esos cuadritos supongo que son para separar espacios, pero el delphi al procesar estos caracteres se cae el programa. Algun sabe como puedo lidiar con este problema..


gracias

andres1569
03-06-2003, 18:51:22
Hola:

¿Cómo capturas esos logs? ¿LLegan como una cadena de texto y los insertas en una tabla? ¿Cómo se envían y reciben esos logs? De por sí, unos cuadraditos no hacen caer ningún programa, otra cosa es lo que hagas con ellos o en qué estructura los almacenes.

Un saludo

alejandrowa
03-06-2003, 19:30:03
Los logs me llegan desde la central telefonica en un archivo de texto, el cual es alimentado automaticamente por la central.

Lo que hago es abrir el archivo de texto y leer linea a linea, analizando la fecha y la duracion de la llamada....

El programa se cae cuando llega a esos cuadritos. Creo que esos cuadritos son para simular espacios, en el notepad se ven pero por ejemplo en otros editores , lo que crean son espacios entre texto. COmo para dar formato

NO se que sera.

gracias

Julià T.
03-06-2003, 19:30:04
yo diria que los ficheros no son de solo texto, más bién texto y binario, ya que los cuadraditos suelen aparecer en ficheros binarios abiertos desde el bloc de notas.


Realmente, depende del modo de lectura, puede pasar cualquier cosa cuando lees un fichero binario como si fuera de texto.

alejandrowa
03-06-2003, 19:37:26
Yo si creo que el archivo de texto tiene sus partes binarios, por que al quitar esos cuadritos mi software funciona perfecto. Como puedo eliminar estos cuadritos o que delphi no los tome en cuenta o alguna manera de eliminar el problema.


gracias.

Julià T.
03-06-2003, 19:45:34
leer el texto hasta que encuentres un caracter menor que 32 es una posible solución

andres1569
03-06-2003, 20:31:28
Hola:

Si usas el método LoadFromFile de un objeto TStrings, esos caracteres últimos "despistan" y no se puede leer el archivo. Prueba con este código. En el parámetro Lista puedes pasar la propiedad Lines de un Memo, por ejemplo, para ver el resultado.


procedure LeeArchivo (NomFile: String; Lista: TStrings);
var
ArchText : TextFile;
s : String;
begin
Lista.Clear;
AssignFile (ArchText, NomFile);
Reset (ArchText);
while NOT EOF(ArchText) do
begin
ReadLn (ArchText, s); // leemos una linea
s := TrimRight(s); // eliminamos espacios y caracteres de control a la derecha
Lista.Add (s); // la añadimos a la lista
end;
CloseFile (ArchText);
end;


Un Saludo