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 14-10-2007
Drakyto Drakyto is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
Drakyto Va por buen camino
Red face Ordenar el contenido de un Memo

Estimados Amigos, sé que esto puede ser algo extraño (x no decir ridículo) pero realmente quisiera q m ayuden indicándome un método rápido, sencillo y eficaz para ordenar el contenido de un Memo, x ej. si contiene datos numéricos en desorden (pero en una sola columna), cómo puedo hacer para que con alguna acción se reordenen de forma ascendente en el mismo Memo. Gracias de antemano x su ayuda y disculpas x recurrir a uds. para algo así...
Drakyto
Responder Con Cita
  #2  
Antiguo 16-10-2007
agustinh8080 agustinh8080 is offline
Registrado
 
Registrado: mar 2007
Posts: 2
Poder: 0
agustinh8080 Va por buen camino
Talking Mira Este Pequeño Codigo Que Programe Hace Poco

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

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

var
Form1: TForm1; // Una forma que tiene un boton y un memo

implementation
{$R *.dfm}
type
TDatoaOrdenar = procedure (auxLinea:String;Var ResultCadena:String) of object;

TOrdena = class
procedure estedato(auxLinea:String;Var ResultCadena:String);
procedure Sort(A: TStrings);
end;

Var
FDatoaOrdenar:TDatoaOrdenar;
Ordenar:TOrdena;

procedure TOrdena.estedato(auxLinea:String;Var ResultCadena:String);
begin
{ Este método es para el dato de la
linea "auxLinea" que se va a usar para hacer la comparacíón,
evidentemente este método se puede reprogramar, es un ejemplo}
if length(auxLinea)>1 then
ResultCadena:=Copy(auxLinea,2,length(auxLinea))
else
ResultCadena:='';
end;

procedure TOrdena.Sort(A: TStrings);
Function CogerDato(estaCadena:String):String;
begin
if Assigned(FDatoaOrdenar) then
FDatoaOrdenar(estaCadena,Result)
else
Result:=estaCadena;
end;

procedure QuickSort(A: TStrings; iLo, iHi: Integer);
// Este procedimiento lo saque de los demos y lo adapte a mi necesidad
var
Lo, Hi : Integer;
la_Cadena,Mid, T:String;
{ Si son números lo que se va a tratar la variable "Mid" debe ser de tipo integer
}
begin
Lo := iLo;
Hi := iHi;
// Mid := A[(Lo + Hi) div 2];
{ Si son números lo que se va a tratar simplemente la linea siguiente quedaría así
Mid := IntToStr(CogerDato(A[(Lo + Hi) div 2]));
}
Mid := CogerDato(A[(Lo + Hi) div 2]);
repeat
{ Si son números lo que se va a tratar simplemente la lineas siguientes quedarían así
while IntToStr(CogerDato(A[Lo])) < Mid do Inc(Lo);
while IntToStr(CogerDato(A[Hi])) > Mid do Dec(Hi);
}
while CogerDato(A[Lo]) < Mid do Inc(Lo);
while CogerDato(A[Hi]) > Mid do Dec(Hi);
if Lo <= Hi then
begin
// VisualSwap(A[Lo], A[Hi], Lo, Hi);
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QuickSort(A, iLo, Hi);
if Lo < iHi then QuickSort(A, Lo, iHi);
// if Terminated then Exit;
end;

begin
// QuickSort(A, Low(A), High(A));
FDatoaOrdenar:=estedato; // se el assigna un procedimiento a FDatoaOrdenar
QuickSort(A, 0, A.Count-1);
end;

{ Este es un método de un boton puesto en la forma
Evidentemente la clase Ordenar debe ser creada para que no de un error
}
procedure TForm1.Button1Click(Sender: TObject);
begin
Ordenar.Sort(memo1.Lines);
end;
initialization
Ordenar:=TOrdena.Create;
finalization
Ordenar.Free;
end.

// Aca le mando el fuente
{ Por defecto el algoritmo ordena por la cadena completa que encuentra en el memo

pruebe poniendo estos datos en el memo

89
90
14
26
33
48
52
67
76
84
95

corra el ejemplo
después comente esta linea

// FDatoaOrdenar:=estedato; // se el assigna un procedimiento a FDatoaOrdenar

corra el ejemplo

y compare los resultados

}

Última edición por agustinh8080 fecha: 16-10-2007 a las 03:30:37.
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 guardo el contenido den un memo en mi BD?? rodrigodeoz Conexión con bases de datos 12 26-09-2007 17:26:03
Organizar alfabeticamente el contenido de un Memo JuanErasmo C++ Builder 5 23-06-2007 18:58:30
Visualizar contenido memo en un dbgrid luxus Conexión con bases de datos 4 31-08-2006 18:56:59
Ordenar texto en un memo Jad C++ Builder 6 24-05-2006 10:47:58
Recuperar registro mediante sql al contenido de un memo Pablo Carlos SQL 2 15-01-2005 14:58:25


La franja horaria es GMT +2. Ahora son las 11:42:36.


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