FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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 04:30:37. |
|
|
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 18:26:03 |
Organizar alfabeticamente el contenido de un Memo | JuanErasmo | C++ Builder | 5 | 23-06-2007 19:58:30 |
Visualizar contenido memo en un dbgrid | luxus | Conexión con bases de datos | 4 | 31-08-2006 19:56:59 |
Ordenar texto en un memo | Jad | C++ Builder | 6 | 24-05-2006 11:47:58 |
Recuperar registro mediante sql al contenido de un memo | Pablo Carlos | SQL | 2 | 15-01-2005 15:58:25 |
|