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 09-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.109
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A bote pronto se me ocurre algo parecido a esto:

Código Delphi [-]
(*
  Carga un archivo existente e itera por sus líneas para
  rechazar aquellas que superen la longitud deseada.

  Si el archivo especificado no existe este procedimiento
  levantará una excepción del tipo "EInOutError"

  Ejemplo de llamada:

  var
    t: TStrings;
  begin
    t := TStringList.Create();
    try
      GetWordsFromFile('palabras.txt', 2, t);
      Memo1.Text := t.Text;
    finally
      t.Free();
    end;
  end;

  Parámetros:

  filePath: Ruta del archivo a cargar

  maxChars: Máximos caracteres para no rechazar una línea

  resultsWords: Variable donde se albergará el resultado,
  es decir, las líneas cargadas del archivo no rechazadas

*)
procedure GetWordsFromFile(filePath: string;
 maxChars: integer; var resultsWords: TStrings);
var
  i: integer;
begin
  if FileExists(filePath) then begin
    resultsWords.LoadFromFile(filePath);
    for i := resultsWords.Count-1 downto 0 do
    begin
      if (Length(resultsWords[i]) > maxChars) then
      begin
        resultsWords.Delete(i);
      end;
    end;
  end
  else begin
    raise EInOutError.CreateFmt(
      'The file "%s" dont exists',
      [filePath]
    );
  end;
end;

No sé si puede servirte o darte al menos una idea.

PD. Básicamente es lo que dice el compañero Neftalí, si bien en este caso no se desechan las palabras del "Memo", sino que no llegan a cargarse en el mismo.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 09-11-2007 a las 12:58:46.
Responder Con Cita
  #2  
Antiguo 09-11-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.297
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por dec Ver Mensaje
PD. Básicamente es lo que dice el compañero Neftalí, si bien en este caso no se desechan las palabras del "Memo", sino que no llegan a cargarse en el mismo.
Básicamente esta solución es mejor, por que las que no valen ya nos las añades.
Mi solución (que estoy un poco perro hoy y era por no escribir) las descarta luego, por lo que estás haciendo trabajo de más....
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.109
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno, no sé. No lo tengo tan claro.

En primer lugar, el procedimiento propuesto lo escribí a bote pronto, y, es muy probable que existan mejores soluciones. Ahora bien, cargar las palabras, hemos de hacerlo, bien directamente en el "Memo", o no, pero, ese paso hay que darlo.

Yo evité cargarlas antes en una variable y luego asignar dicha variable al "Memo" porque tal vez el recorrer y borrar las palabras una vez dentro de este, pudiera "saltar a la vista" del usuario, que están a la que salta, no sé si me explico.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 09-11-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,
Yo evité cargarlas antes en una variable y luego asignar dicha variable al "Memo" porque tal vez el recorrer y borrar las palabras una vez dentro de este, pudiera "saltar a la vista" del usuario, que están a la que salta, no sé si me explico.
Tenemos el metodo BeginUpdate, que evita que salten los eventos de redibujado, modificacion, etc, evitando el problema visual y ademas acelerando muchisimo las modificaciones:

Código Delphi [-]
Memo1.Lines.BeginUpdate;
try
  //
  // Añadir, modificar o borrar lineas del memo.
  //
finally
  Memo1.Lines.EndUpdate;
end;

Saludos
Responder Con Cita
  #5  
Antiguo 09-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.109
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; gracias Mick. Efectivamente, existe "BeginUpdate", aunque, no probé con él. Pero podría servir, así es.
__________________
David Esperalta
www.decsoftutils.com
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
Anuncios por Palabras gluglu Humor 3 12-05-2006 10:55:31
El Somero de las palabras. marcoszorrilla Humor 1 06-01-2006 21:48:54
busqueda por palabras majosf Conexión con bases de datos 2 19-09-2005 19:44:26
eliminar opcion de eliminar en un dbgrid morfeo21 Varios 3 14-07-2005 17:05:32


La franja horaria es GMT +2. Ahora son las 20:45:49.


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