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 07-08-2008
Avatar de Greco
Greco Greco is offline
Miembro
 
Registrado: jul 2007
Ubicación: Chile
Posts: 97
Poder: 17
Greco Va por buen camino
manipular un TXT, hacer una especie de log...

Hola... hace tiempo que no me pasaba por aquí...

Bueno, tengo la necesidad de realizar un pequeño programita que me guarde en un txt unas 5 lineas... es como una especie de registro que me almacena una cadena en una linea nueva pero siempre quiero mantener la misma cantidad de lineas (registros), osea, si quiero solo 5 lineas me debería borrar la mas antigua para poder almacenar la ultima linea y quedar siempre con 5 lineas.
Una particularidad que debe tener es que si el contenido que va a almacenar ya fue almacenado la ultima vez, entonces no lo vuelve a guardar...

archivo.txt
----------
Código:
texto de la linea uno
aqui la linea dos
...
este es el texto para la linea 5
como conocimientos de delphi tengo bastante poco ya que solo es por hobbie, me he leido algunos manuales y probado algunos ejemplos entonces no es mucho lo que se.

Buscando en el foro vi que lo que me puede servir es el tstringlist, alguno me puede indicarmas o menos como ocuparlo y guiarme un poco en la tarea para poder ir probando??? no estoy pidiendo codigo listo ni nada, para que no se mal interprete... lo que mas deceo es aprender asi que cualquier ayuda será bienvenida.

Si no me expliqué bien en lo que necesito realizar o algo no quedó claro solo pregunten y doy mas detalles.

Saludos
__________________
Greco - Principiante
Responder Con Cita
  #2  
Antiguo 07-08-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Hola, manejar un TStringList es de lo mas sencillo, pero requiere la unidad Classes. Si no deseas emplear esta unidad por motivos de tamaño del ejecutables por ejemplo te recomiendo que uses los viejos métodos AssignFiles, Reset, Writeln.. etc

Código Delphi [-]
uses Classes;
 
procedure CrearLog;
var
Log: TStringList;
begin
Log:= TStringList.Create;
Log.add('Linea 1');
Log.add('Linea 2');
Log.add('....');
Log.SaveToFile('C:\log.txt');
Log.free;
end;

Salu2
Responder Con Cita
  #3  
Antiguo 07-08-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Vamos a ver si lo puedo hacer de memoria:
Código Delphi [-]
procedure Log(Str: String; Archivo: String);
begin
  // Creamos el objeto
  with TStringList.Create do
  try
    try
      // Intentamos cargar el archivo
      LoadFromFile(Archivo);
    except
      // Si no podemos ignoramos el error
    end;
    // Si ya hay lineas
    if Count > 0 then
     // Comprobamos si la ultima es igual a la que queremos introducir
     if Strings[Count-1] = Str then
      Exit; // Si lo es salimos
    // Dejamos solo las cuatro ultimas lineas
    while Count > 4 do
      Delete(0);
    // Y añadimos la nueva linea
    Add(Str);
   // Por ultimo guardamos el archivo
    SaveToFile(Archivo);
  finally
    Free;
  end;
end;
Responder Con Cita
  #4  
Antiguo 07-08-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Seoane, siempre complicas las cosas . Se me olvido comprobar si existía el archivo para cargarlo, es que no tengo el compilador delante

Código Delphi [-]
uses Classes; 


procedure CrearLog;
var
Log: TStringList;
begin
Log:= TStringList.Create;
If FileExists('C:\log.txt') then Log.LoadFromFile('C:\log.txt');
Log.add('Linea 1');
Log.add('Linea 2');
Log.add('....');
Log.SaveToFile('C:\log.txt');
Log.free;
end;

Otro método:

Código Delphi [-]
var
Log: TextFile;
begin
AssignFile (Log, 'C:\log.txt');
Append (Log);
Writeln (Log, 'Linea 1');
Writeln (Log, 'Linea 2');
Writeln (Log, '...');
CloseFile (Log);
end;

Salu2

Última edición por Khronos fecha: 07-08-2008 a las 23:43:18.
Responder Con Cita
  #5  
Antiguo 07-08-2008
jandok238 jandok238 is offline
No confirmado
 
Registrado: ago 2007
Ubicación: ¿ǝɯ dlǝɥ noʎ uɐɔ 'ʍouʞ ʇ,uop ı
Posts: 415
Poder: 0
jandok238 Va por buen camino
Cita:
Empezado por Khronos Ver Mensaje
Seoane, siempre complicas las cosas . Se me olvido comprobar si existía el archivo para cargarlo, es que no tengo el compilador delante

Salu2
el detalle es que tu no validas que sean solo 5 lineas....

ademas... yo supongo (me parece que SEOANE tambien) que se va agregando linea a linea, pero si ya hay 5 lineas, se debe borrar la primera para insertar la nueva, pero en ultimo lugar....

bueno asi lo entendi yo...

salu2!!!!!!!
Responder Con Cita
  #6  
Antiguo 07-08-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Tienes razón, no me di cuenta de las 5 líneas

Salu2

Última edición por Khronos fecha: 07-08-2008 a las 23:59:00.
Responder Con Cita
  #7  
Antiguo 08-08-2008
jandok238 jandok238 is offline
No confirmado
 
Registrado: ago 2007
Ubicación: ¿ǝɯ dlǝɥ noʎ uɐɔ 'ʍouʞ ʇ,uop ı
Posts: 415
Poder: 0
jandok238 Va por buen camino
pues esta es mi aportacion.... (ya lo tenia en algun programita... (bueno, sin la restriccion de 5 lineas... ) )

Código Delphi [-]
procedure TForm1.GuardarUltimaLinea(UltimaLinea:String);
var
  texto : TStrings;
begin
  texto:=TStringList.Create;
  if (FileExists('c:\archivo_LOG.txt')) then
  begin
    texto.LoadFromFile('c:\archivo_LOG.txt');
    if (texto.Count = 5) then
    begin
      texto.Delete(0);
      texto.Add(UltimaLinea);
    end
    else
    begin
      texto.Add(UltimaLinea);
    end;
    texto.SaveToFile('c:\archivo_LOG.txt');
    texto.Free;
  end
  else
  begin
    texto.Add(UltimaLinea);
    texto.SaveToFile('c:\archivo_LOG.txt');
    texto.Free;
  end;
end;

salu2!!!!!!!

reduciendolo un poco...

Código Delphi [-]
procedure TForm1.GuardarUltimaLinea(UltimaLinea:String);
var
  texto : TStrings;
begin
  texto:=TStringList.Create;
  if (FileExists('c:\archivo_LOG.txt')) then
  begin
    texto.LoadFromFile('c:\archivo_LOG.txt');
    if (texto.Count = 5) then
      texto.Delete(0);
    texto.Add(UltimaLinea);
    texto.SaveToFile('c:\archivo_LOG.txt');
    texto.Free;
  end
  else
  begin
    texto.Add(UltimaLinea);
    texto.SaveToFile('c:\archivo_LOG.txt');
    texto.Free;
  end;
end;

Última edición por jandok238 fecha: 08-08-2008 a las 00:32:10.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como hacer una especie de chat(consulta chat) bellleti Conexión con bases de datos 3 10-07-2007 13:30:01
Especie de cliente servidor vicrati Conexión con bases de datos 3 15-06-2007 14:50:52
programar una especie de spider elcigarra PHP 2 17-01-2007 07:02:54
Ayuda Con Una Especie De 'onfocus' LAFALOFO Varios 4 31-08-2006 15:42:18
Especie de ShowMessage desde PHP aram2r PHP 4 07-02-2005 10:27:16


La franja horaria es GMT +2. Ahora son las 04:47:04.


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