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-08-2013
exequielmatias1 exequielmatias1 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 29
Poder: 0
exequielmatias1 Va por buen camino
Post Mostrar texto de un DBMemo a partir de un caracter

Hola gente genia! ja les cuento, tengo un dbmemo conectada a una base de datos, en los campos memo, el texto, contiene muchos codigos y caracteres , yo solo quiero mostrar el texto en el memo que por ejemplo empieza despues de un caracter y termina con el mismo ej #texto texto texto# antes y despues se ven codigos que no me interesan, que codigo puedo usar?
Responder Con Cita
  #2  
Antiguo 09-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola exequielmatias1.

Podes usar el evento AfterScroll del TDataSet.
Código Delphi [-]
...
implementation

uses StrUtils;

const
   DELIM = '#';

procedure TForm1.DataSetAfterScroll(DataSet: TDataSet);
var
  p1, p2: Integer;
begin
  with DBMemo1 do  
  begin
    p1 := Pos(DELIM, Text) + 1;
    p2 := PosEx(DELIM, Text, p1);
    if (p1 > 0) and (p2 > 0) then
      Text := Copy(Text, p1, p2 - p1);
  end;
end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 10-08-2013
exequielmatias1 exequielmatias1 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 29
Poder: 0
exequielmatias1 Va por buen camino
Gracias ecfisa!! me salio perfecto, pero solo me recupera la primer linea que encuentra, quiero hacerlo con un while para que busque en todo el texto, pero algo mal estoy haciendo, no se me ocurre como poner el while en este codigo. gracias!
Responder Con Cita
  #4  
Antiguo 10-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola exequielmatias1.

Para que te muestre todos aquellos caracteres del texto que estén comprendidos entre dos delimitadores:
Código Delphi [-]
...
uses StrUtils;

const
   DELIM = '#';


procedure TForm1.DataSetAfterScroll(DataSet: TDataSet);
var
  p1, p2: Integer;
  s1, aux : string;
begin
  s1  := DBMemo1.Text;
  repeat
    p1 := Pos(DELIM, s1);
    p2 := PosEx(DELIM, s1, p1 + 1);
    if (p1 <> 0) then
    begin
      aux := aux + Copy(s1, p1+1, p2 - p1 -1) + ' ';
      Delete(s1, 1, p2);
    end;
  until (p1 = 0) or (p1 > p2);
  if Length(s1) <> Length(DBMemo1.Text) then
    DBMemo1.Text := aux;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 10-08-2013 a las 23:11:54. Razón: agregar uses
Responder Con Cita
  #5  
Antiguo 20-08-2013
exequielmatias1 exequielmatias1 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 29
Poder: 0
exequielmatias1 Va por buen camino
hola! gracias por tu respuesta, lamentablemente con el ultimo codigo solo me devuelve la primer linea..

te explico mas o menos lo que intento hacer..
tengo un dbmemo conectada desde un ADOQuery una base de datos en access.
En uno de los campos memo, contiene texto con muchos codigos y caracteres , yo solo quiero mostrar un codigo que esta dentro del memo que siempre empieza por ej. con SABxxxx luego son 4 letras diferentes pero siempre en total son 8 caracteres.
por ejemplo mi texto del memo es:
xtxtxtxtxtxtxtyxtxtxt #SABAEIOU#txtxtxtxtxtxt @@textotextotexto # SABUOIEA# textotextotextotexto (..)*100
y quiero que en mi dbmemo solo muestre
SABAEIOU
SABUOIEA

ademas otro dato este codigo de 8 caracteres antes tiene un # y termina con un #
luego este codigo lo comparo con otra tabla y me tiene que devolver en un edit el dato de referencia a ese codigo.. espero ser claro >
Responder Con Cita
  #6  
Antiguo 20-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola exequielmatias1.

Supongo que algo no has copiado bien, ya que el código que te puse en el mensaje anterior hace exáctamente lo que buscas.

Te adjunto un demo con dos TDBMemos y un TDBNavigator para que puedas probar con tranquilidad. El primer DBMemo muestra el texto original y el segundo sólo las subcadenas.

Usé la tabla biolife.db con BDE dado que no uso Access y solo dispongo de las tablas que trae Delphi (ninguna con memo). Pero el código funcionará del mismo modo con los componentes ADO.

Recordá que al extraer las subcadenas en el evento AfterScroll, luego de modificado el texto, deberás mover el cursor para ver los cambios.

Saludos.
Archivos Adjuntos
Tipo de Archivo: zip Demo.zip (120,2 KB, 2 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 21-08-2013
exequielmatias1 exequielmatias1 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 29
Poder: 0
exequielmatias1 Va por buen camino
Gracias ecfisa por tu paciencia!! logre hacer lo que me necesitaba, solo me falta comparar esas 8 letras con una tabla y mostrar el valor que corresponde, por ahora puedo validar solo del primer campo de 8 letras, pero cuando tengo mas campos seguidos no los puedo validar a todos.
voy a seguir buscando sino hare otro post.
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
Buscar texto en dbMemo exequielmatias1 Conexión con bases de datos 3 14-08-2013 01:21:15
Mostrar un caracter si ocurre una condicion titooo MS SQL Server 4 31-07-2013 12:23:50
como mostrar un DBMemo? DOS Conexión con bases de datos 4 05-12-2012 23:26:46
Leer texto caracter a caracter kikecg Firebird e Interbase 11 23-11-2010 17:44:44
Como mostrar un carácter zam Varios 4 22-06-2005 17:00:20


La franja horaria es GMT +2. Ahora son las 13:19:03.


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