Vetores - (Arrays)
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.
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
Curtidas 0
Respostas
Antseralves
11/10/2006
Já pensou em usar um TStringGrid pra isso ?
GOSTEI 0
Marco Salles
11/10/2006
é 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:
//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
Agora vamos criar uim método para ordenar e ler esses dados:
procedure TForm1.Button1Click(Sender: TObject);
Tal como voce usar um array .. Por analogia se pode escrever a igualdade:
Isto é voce pode carregar um array , descarrega-lo usando esta idéia e depois carrega-lo novamente..
Boa sorte.
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.
GOSTEI 0