como criar arrays dinamicas?
seguinte... tenho duas arrays que declaro no meu codigo...
quero substituir isso por dados vindo do banco de dados .. ex...
quero criar a array ... cor usando dados do banco de dados.....
se tiver ex 5 registros no banco .. queria q ele montasse pra mim...
alguem sabe como faço isso?
valeuz :p
cor: array[1..3] of string = (´colour´, ´pb´, ´black and white´); corvalor: array[1..3] of string = (´1´, ´2´, ´2´);
quero substituir isso por dados vindo do banco de dados .. ex...
quero criar a array ... cor usando dados do banco de dados.....
se tiver ex 5 registros no banco .. queria q ele montasse pra mim...
cor: array[1..5] of string = (´registro1´, ´registro2´, ´registro3´, ´registro4´, ´registro5´);
alguem sabe como faço isso?
valeuz :p
Salsa
Curtidas 0
Respostas
Massuda
07/02/2006
Você tem que escrever o código que carrega os valores do BD no array. O compilador não fará isso para você. Dê mais detalhes: qual BD, componentes de acesso ao BD, etc.
GOSTEI 0
Saint
07/02/2006
Opa..
um simples exemplo de como usar o array dinamico:
var NomesCliente: array of string;
iContador:integer;
begin
iContador:=0;
with qryClientes do
begin
// aqui atribui o tamanho da matriz com a quantidade de registros da sua query
Setlengh(NomesCliente,RecordCount);
while not eof do
begin
NomesCliente[iContador]:=FieldbyName(´nm_cliente´).asstring;
inc(iContador);
Next;
end;
end;
end;
Nesse caso eu atribui o tamanho da matriz utilizando o recordcount da query usando o setlength(matriz,quantidade) e depois varri a query atribuindo o valor de algum campo qualquer a uma posicao no array..
um simples exemplo de como usar o array dinamico:
var NomesCliente: array of string;
iContador:integer;
begin
iContador:=0;
with qryClientes do
begin
// aqui atribui o tamanho da matriz com a quantidade de registros da sua query
Setlengh(NomesCliente,RecordCount);
while not eof do
begin
NomesCliente[iContador]:=FieldbyName(´nm_cliente´).asstring;
inc(iContador);
Next;
end;
end;
end;
Nesse caso eu atribui o tamanho da matriz utilizando o recordcount da query usando o setlength(matriz,quantidade) e depois varri a query atribuindo o valor de algum campo qualquer a uma posicao no array..
GOSTEI 0
Khundalini
07/02/2006
Eu faria esse código diferente. Sabendo que a propriedade RecordCount nem sempre retorna o que se espera, eu reformularia esse código para o seguinte:
var
NomesCliente: array of string;
begin
with qryClientes do
begin
First;
while not Eof do
begin
SetLength(NomesCliente, Length(NomesCliente) + 1);
NomesCliente[Length(NomesCliente) - 1] :=
FieldByName(´nm_cliente´).AsString;
Next;
end;
end;
end;
Sds,
Rubem Rocha
Manaus, AM
var
NomesCliente: array of string;
begin
with qryClientes do
begin
First;
while not Eof do
begin
SetLength(NomesCliente, Length(NomesCliente) + 1);
NomesCliente[Length(NomesCliente) - 1] :=
FieldByName(´nm_cliente´).AsString;
Next;
end;
end;
end;
Sds,
Rubem Rocha
Manaus, AM
GOSTEI 0
Aroldo Zanela
07/02/2006
Colega,
Não sei qual é a idéia, mas acho que o uso de CDS ou até mesmo de TStringList podem ser mais indicados para manipulação de dados.
Não sei qual é a idéia, mas acho que o uso de CDS ou até mesmo de TStringList podem ser mais indicados para manipulação de dados.
GOSTEI 0
Khundalini
07/02/2006
Aroldo,
Sua sugestão é realmente bem melhor, principalmente se for necessário montar uma tabela de lookup.
Sds,
Rubem Rocha
Manaus, AM
Sua sugestão é realmente bem melhor, principalmente se for necessário montar uma tabela de lookup.
Sds,
Rubem Rocha
Manaus, AM
GOSTEI 0