Fórum Comando para Ordenar Arrays #331201
16/10/2006
0
Olá
Existe algum comando para ordenar vetores no delphi, se sim, gostaria que alguém desse um pequeno exemplo de como ordenar vetor bidimensional, exemplo 10 linhas duas colunas. Obrigado.
Existe algum comando para ordenar vetores no delphi, se sim, gostaria que alguém desse um pequeno exemplo de como ordenar vetor bidimensional, exemplo 10 linhas duas colunas. Obrigado.
Tida
Curtir tópico
+ 0
Responder
Posts
16/10/2006
Marco Salles
usando callback
se não me engano ja lhe enviei algo em outro tópico... Mas voce não deu a minima :cry: :cry: :cry: :cry:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TClientes = class
private
FNome: string;
FEndereco: string;
procedure SetNome(const Value: string);
procedure SetEndereco(const Value: string);
public
property Nome: string read FNome write SetNome;
property Endereco: string read FEndereco write SetEndereco;
end;
TForm1 = class(TForm)
ListBox1: TListBox;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
FListaClientes: TList;
lCliente1, lCliente2, lCliente3: TClientes;
procedure SetListaClientes(const Value: TList);
private
{ Private declarations }
property ListaClientes: TList read FListaClientes write SetListaClientes;
procedure EncheListaClientes;
procedure AtualizaListBox;
public
{ Public declarations }
end;
var
Form1: TForm1;
function ClassificaPorNome(item1: Pointer; item2: Pointer): integer;
function ClassificarPorEndereco(item1: Pointer; item2: Pointer): integer;
implementation
{$R *.dfm}
{ TClientes }
procedure TClientes.SetEndereco(const Value: string);
begin
FEndereco := Value;
end;
procedure TClientes.SetNome(const Value: string);
begin
FNome := Value;
end;
{ TForm1 }
procedure TForm1.SetListaClientes(const Value: TList);
begin
FListaClientes := Value;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ListaClientes := TList.Create;
EncheListaClientes;
AtualizaListBox;
end;
procedure TForm1.EncheListaClientes;
begin
lCliente1 := TClientes.Create;
lCliente1.Nome := ´Paulo´;
lCliente1.Endereco := ´Av. Joao Pereira Barreto´;
ListaClientes.Add(lCliente1);
lCliente2 := TClientes.Create;
lCliente2.Nome := ´Andre´;
lCliente2.Endereco := ´Av. Ayrton Senna´;
ListaClientes.Add(lCliente2);
lCliente3 := TClientes.Create;
lCliente3.Nome := ´Jair´;
lCliente3.Endereco := ´Rua Dom Pedro I´;
ListaClientes.Add(lCliente3);
end;
procedure TForm1.AtualizaListBox;
var
lIndex: integer;
begin
ListBox1.Items.Clear;
for lIndex := 0 to ListaClientes.Count -1 do
ListBox1.Items.Add(TClientes(ListaClientes[lIndex]).Nome + ´-´ + TClientes(ListaClientes[lIndex]).Endereco);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListaClientes.Sort(@ClassificaPorNome);
AtualizaListBox;
end;
function ClassificarPorEndereco(item1, item2: Pointer): integer;
begin
result := CompareText(TClientes(item1).Endereco, TClientes(item2).Endereco);
end;
function ClassificaPorNome(item1, item2: Pointer): integer;
begin
result := CompareText(TClientes(item1).Nome, TClientes(item2).Nome);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ListaClientes.Sort(@ClassificarPorEndereco);
AtualizaListBox;
end;
end.se não me engano ja lhe enviei algo em outro tópico... Mas voce não deu a minima :cry: :cry: :cry: :cry:
Responder
Gostei + 0
16/10/2006
Tida
Me perdoe amigo
Valeu pela força, realmente me descuidei e mandei outra pergunta antes de visualizar se havia alguma resposta, obrigado mais uma vez pela ajuda, um abraço.
Valeu pela força, realmente me descuidei e mandei outra pergunta antes de visualizar se havia alguma resposta, obrigado mais uma vez pela ajuda, um abraço.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)