Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-05-2014
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No tienes que disculparte, pero, el código que ha puesto Daniel más arriba hace exactamente lo que precisas:

Código Delphi [-]
procedure TForm1.btnPasarLineasClick(Sender: TObject);
var
  i,j: Integer;
begin
  for i:= 0 to Memo1.Lines.Count-1 do
    for j:= Low(DIRASM) to High(DIRASM) do
      if AnsiPos(DIRASM[j], Memo1.Lines[i]) <> 0 then
        Memo2.Lines.Add(Memo1.Lines[i]);
end;

Ahí se recorre el "Memo1" línea a línea, se busca cada palabra clave en cada línea, y, si se encuentra, se añade la línea al "Memo2".
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 01-05-2014 a las 15:38:55.
Responder Con Cita
  #2  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Mantixd,

Cita:
Empezado por Mantixd
...lo que quiero es que al hacer click en un botón me lea automáticamente todo el Memo1 y los datos encontrados (comparara el memo con el arreglo) los mande todos juntos al Memo2...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  RegAsm: Array[1..74] of string =  ('db','ALIGN','.ALPHA','ASSUME','.CODE','COMM','COMMENT',
                                     '.CONST','.CREF','.DATA','DB','DD','DF','DOSSEG','DQ',
                                     'DT','DW','ELSE','END','ENDIF','ENDM','ENDP','ENDS','EQU',
                                     '.ERRnn','EVEN','EXITM','EXTRN','.FARDATA','.FARDATA?',
                                     'GROUP','IF','IF1','IF2','IFB','IFDEF','IFDIF','IFE','IFIDN',
                                     'IFNB','IFNDEF','INCLUDE','INCLUDELIB','IRP','IRPC','LABEL',
                                     '.LALL','.LFCOND','.LIST','LOCAL','MACRO','.MODEL','NAME',
                                     'ORG','OUT','PAGE','PROC','PUBLIC','PURGE','.RADIX','RECORD',
                                     'REPT','.SALL','SEGMENT','.SEQ','.SFCOND','.STACK','STRUC',
                                     'SUBTTL','.TFCOND','TITLE','.XALL','.XCREF','.XLIST');

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Selecciona los Registros de Assembler de un TMemo con base en un Arreglo
procedure TForm1.Button1Click(Sender: TObject);
var
   SL: TStringList;
   i, j, k : Integer;
   Token : String;
   AuxStr : String;

begin

   SL := TStringList.Create;

   Memo2.Clear;

   for i := 0 to Memo1.Lines.Count - 1 do
   begin

      AuxStr := Memo1.Lines[i];

      for j := 1 to Length(AuxStr) do
      begin
         if (AuxStr[j] <> ' ') and (AuxStr[j] <> ',') then
            Token := Token + AuxStr[j]
         else
         begin
            SL.Add(Token);
            Token := EmptyStr;
         end
      end;

      SL.Add(Token);
      Token := EmptyStr;

      for j := 0 to SL.Count - 1 do
         for k := Low(RegAsm) to High(RegAsm) do
            if SL[j] = RegAsm[k] then
               Memo2.Lines.Add(Memo1.Lines[i]);

      SL.Clear;

   end;

   SL.Free;

end;

end.
El código anterior en Delphi 7 y Windows 7 Professional x32, analiza cada línea del TMemo1, las compara tipo Case Sensitive con un arreglo y si haya una ocurrencia copia dicha línea a TMemo2, siguiendo el mismo comportamiento sugerido en el ejemplo del Msg #4.

Espero sea útil

Nelson.
Responder Con Cita
  #3  
Antiguo 01-05-2014
Mantixd Mantixd is offline
Miembro
NULL
 
Registrado: dic 2013
Posts: 17
Poder: 0
Mantixd Va por buen camino
Muchas gracias nelson lo que es no saber mucho acerca de delphi lo bueno es que gracias a uds. Uno puede aprender mucho mas lo unico que vi es que en el memo 2 me imprime el dato 2 veces por ejemplo pongo

HOLA DB HOLA

y me lo imprime en el memo2

HOLA DB HOLA
HOLA DB HOLA

Muchisimas gracias a todos de verdad han sido de gran ayuda!
Responder Con Cita
  #4  
Antiguo 01-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Mantixd,

Cita:
Empezado por Mantixd
...lo unico que vi es que en el Memo 2 me imprime el dato (HOLA DB HOLA) 2 veces...


Revisa estas imágenes:





Las imágenes anteriores fueron tomadas del código sugerido en el Msg #10, funcionando correctamente según lo esperado, siguiendo el mismo comportamiento sugerido en el ejemplo del Msg #4.

Espero que sea útil

Nelson.
Responder Con Cita
  #5  
Antiguo 01-05-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 Mantixd.

No voy a agregar nada a lo que David ha explicado perfectamente.

Solo se me ocurre mencionar que si deseas que funcione tanto para lo escrito en minúsculas como para mayúsculas, sólo hay que aplicar la función UpperCase a la línea que se está revisando:
Código Delphi [-]
procedure TForm1.btnPasarClick(Sender: TObject);
var
  i, j: Integer;
begin
  for i:= 0 to Memo1.Lines.Count-1 do
    for j:= Low(DIRASM) to High(DIRASM) do
      if AnsiPos(DIRASM[j], UpperCase( Memo1.Lines[i] )) <> 0 then 
        Memo2.Lines.Add(Memo1.Lines[i]);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 01-05-2014
Mantixd Mantixd is offline
Miembro
NULL
 
Registrado: dic 2013
Posts: 17
Poder: 0
Mantixd Va por buen camino
Claro que me fue de mas util, y fue mi error lo que pasa es que vi en otras publicaciones el mismo codigo que tu mismo habias posteado pero para que lo imprimiera en un listbox creo jeje y en ese codigo pusiste esta linea asi

Código Delphi [-]
 if UpperCase(SL[j]) = UpperCase(DirAsm[k]) then

y pues en este codigo ya no pusiste la parte del UpperCase y yo si la habia dejado jeje y por eso me imprimia doble ya ahora si quedo todo solucionado muchas gracias Nelson!
Responder Con Cita
  #7  
Antiguo 03-05-2014
Pedron Pedron is offline
Miembro
NULL
 
Registrado: may 2014
Posts: 10
Poder: 0
Pedron Va por buen camino
Hola disculpen perdon que me entrometa por aqui, este codigo si me puede servir mucho pero lo que yo estoy buscando es que me imprima en un memo2 todos los datos que sean diferentes al arreglo, por ejemplo si tengo


Código Delphi [-]
HOLA DB HOLA

Que solo me guarde el

HOLA HOLA

lo que tengo es esto pero pues creo que me hace falta algo agradeceria mucho su ayuda

Código Delphi [-]
        SL := TStringList.Create;

  // ListBox5.Clear;

   for i := 0 to Memo1.Lines.Count - 1 do
   begin

      AuxStr := Memo1.Lines[i];

      for j := 1 to Length(AuxStr) do
      begin
         if (AuxStr[j] <> ' ') and (AuxStr[j] <> ',')
         then

            Token := Token + AuxStr[j]
         else
         begin
            SL.Add(Token);
            Token := EmptyStr;
         end
      end;

      SL.Add(Token);
      Token := EmptyStr;

      for j := 0 to SL.Count - 1 do
       for k := Low(DirAsm) to High(DirAsm) do

            if (UpperCase(Memo1.Lines[i])) <> (UpperCase(DirAsm[k]))


             then



              Memo2.Lines.Add(Memo1.Lines[i]);
Responder Con Cita
  #8  
Antiguo 03-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Pedron,

Cita:
...estoy buscando es que me imprima en un memo2 todos los datos que sean diferentes al arreglo...ejemplo...HOLA DB HOLA...guarde...HOLA HOLA...
Revisa este código:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
   SL: TStringList;
   i, j, k : Integer;
   Token : String;
   AuxStr : String;

begin

   SL := TStringList.Create;

   Memo2.Clear;

   for i := 0 to Memo1.Lines.Count - 1 do
   begin

      AuxStr := Memo1.Lines[i];

      for j := 1 to Length(AuxStr) do
      begin
         if (AuxStr[j] <> ' ') and (AuxStr[j] <> ',') then
            Token := Token + AuxStr[j]
         else
         begin
            SL.Add(Token);
            Token := EmptyStr;
         end
      end;

      SL.Add(Token);
      Token := EmptyStr;

      for j := SL.Count - 1 downto 0 do
         for k := Low(RegAsm) to High(RegAsm) do
            if SL[j] = RegAsm[k] then
               SL.Delete(j);

      for j := 0 to SL.Count - 1 do
         Token := Token + SL[j] + ' ';

      Memo2.Lines.Add(Token);
      Token := EmptyStr;

      SL.Clear;

   end;

   SL.Free;

end;
El código anterior en Delphi 7 y Windows 7 Professional x32, analiza cada línea de TMemo1, las compara tipo Case Sensitive con un arreglo y copia dicha línea a TMemo2 eliminando cualquier ocurrencia encontrada.

Espero sea útil

Nelson.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Guardar datos en Base de Datos MySQL knnibal Conexión con bases de datos 6 23-06-2011 15:36:42
añadir un renglón a un dbgrid olybola Varios 8 07-06-2010 21:23:15
Ir al ultimo renglon en un StringGrid palets Varios 2 18-02-2009 22:11:59
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
agregar un renglón al dbgrid olybola Conexión con bases de datos 1 26-06-2003 20:58:03


La franja horaria es GMT +2. Ahora son las 21:02:40.


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