Fórum Vetores - (Arrays) #331042

11/10/2006

0

Olá

Preciso montar um vetor dinamico e multidimensional, com colunas de tipos diferentes.
Vetor com n linhas, 3 colunas,
coluna1: string
coluna2: string
coluna3: integer

Para posteriormente ordenar pela coluna3.

Já procurei pelos fóruns, achei algo, mas meio confuso, gostaria de algo mais claro um pouco.
Talvez possas me ajudar, caso seja algo meio grande pra postar aqui, mande um exemplo direto pro meu email
informatica@fuca.com.br

Caso não seja possível estes tres critérios num vetor
dinamico, multidimensional, variante
Falem algo sobre dinamico e multidimensional apenas.
Obrigado.


Tida

Tida

Responder

Posts

14/10/2006

Antseralves

Já pensou em usar um TStringGrid pra isso ?


Responder

Gostei + 0

14/10/2006

Marco Salles

é voce pode usar callbacks...fica mais expansivel , porem o entendimento é mais confuso.. Pose usar a Classe TstringList que ja tem o metodo sorted.

um exemplo usando a classe TstringList.. Tente entender cada passo:

type TmeuObjeto = class public constructor create(Colunax,Colunay:String); private coluna1:String; coluna2:String; end;


var Lista:TStringList; umObjeto:TMeuObjeto;


constructor TmeuObjeto.create(Colunax, Colunay: String); begin coluna1:=Colunax; coluna2:=Colunay; end;


procedure TForm1.FormShow(Sender: TObject); begin Lista:=TstringList.Create; end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i:integer; begin for i:=0 To Lista.Count - 1 do TmeuObjeto(Lista.Objects[i]).Free; lista.Free; end;


//para adicionar...Da mesma forma que em um array voce tem que adicionar (Alimentar os elementos ) Com alguma informação , aqui tb voce tera que fazer...

Supos aqui que esta alimentação seje feita atraves de Tres Edits , aonde Edit1.text-->>valor da coluna1 ; edit2.text -->> valor da coluna2 ; edit3.text -->> valor da coluna3
procedure TForm1.Button2Click(Sender: TObject); begin umObjeto:=TMeuObjeto.create(edit1.Text,edit2.Text); Lista.AddObject(edit3.Text,umObjeto); end;



Agora vamos criar uim método para ordenar e ler esses dados:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; begin lista.Sort; //este método ja esta pronto na vcl... for i:=0 To Lista.Count - 1 do begin Showmessage(Lista.Strings[i]); showmessage(TmeuObjeto(Lista.Objects[i]).coluna1); showmessage(TmeuObjeto(Lista.Objects[i]).coluna2); end; end;


Tal como voce usar um array .. Por analogia se pode escrever a igualdade:
A[n,1]=TmeuObjeto(Lista.Objects[n]).coluna1 A[n,2]=TmeuObjeto(Lista.Objects[n]).coluna2 A[n,3]=Lista.Strings[n])


Isto é voce pode carregar um array , descarrega-lo usando esta idéia e depois carrega-lo novamente..

Boa sorte.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar