Fórum Ponteiro/Record #311191
31/01/2006
0
tenho um tabela, e gostaria de gravar o conteudo desta tabela numa variavel tipo ponteiro.
exemplo:
a tabela, possui 3 campos
Programa : String;
Status : Integer;
Hint : String;
vamos supor que o select retorne 5 registros,
tava pensando em fazer assim;
type
TAcesso = Record
Programa : String;
Status : Integer;
Hint : String;
end;
Acesso : TAcesso;
entao, no primeiro registro eu gravava assim:
Acesso.Programa = valor de programa
Acesso.Status = valor de status
Hint = valor de Hint.
no registro seguinte, a mesma coisa.
so que ele grava somente o ultimo registro porque nao tem referencia alguma, precisava ser como se fosse arrays.
outro detalhe,
apos gravar todos os dados, eu preciso alterar algum desses valores, e o mesmo de ser alterado na variavel Acesso.
a forma de fazer, é outra (eu sei),so usei esse metodo para poder explicar.
obrigado.
Pedih
Curtir tópico
+ 0Posts
31/01/2006
Aroldo Zanela
Não entendi a sua dúvida?
type TAcesso = Record Programa : String; Status : Integer; Hint : String; end; var Acesso: Array[0..4] of TAcesso; begin Acesso[0].Programa:= ´Programa´; Acesso[0].Status:= 0; Acesso[0].Hint:= ´Dica´ ... ... ... end;
Gostei + 0
31/01/2006
Pedih
Não entendi a sua dúvida?
type TAcesso = Record Programa : String; Status : Integer; Hint : String; end; var Acesso: Array[0..4] of TAcesso; begin Acesso[0].Programa:= ´Programa´; Acesso[0].Status:= 0; Acesso[0].Hint:= ´Dica´ ... ... ... end;
Aroldo, boa tarde.
é o seguinte, nao tenho nocao ainda da qde de registros, citei 5 como exemplo, mas podem ser 10, como 100, como 1000.
acha q assim pode funcionar (com array)???
Gostei + 0
31/01/2006
Aroldo Zanela
O correto seria uma tabela num banco de dados. Tem problema quanto a isso?
Gostei + 0
31/01/2006
Michael
var Acessos: array of TAcesso; begin SetLength(Acessos, 100); Acessos[0].Programa := ...; end;
Para iterar por uma array deste tipo vc pode usar as funções [b:4ee2e85e13]Low[/b:4ee2e85e13] e [b:4ee2e85e13]High [/b:4ee2e85e13]:
var I: Integer; begin for I := Low(Acessos) to High(Acessos) do Acessos[I].Programa := ...; end;
[b:4ee2e85e13]Length[/b:4ee2e85e13] ou [b:4ee2e85e13]High(X) + 1[/b:4ee2e85e13] retornam o total de elementos da array.
De qualquer forma, dependendo do que vc esteja querendo fazer, talvez seja mais indicado, como o colega [b:4ee2e85e13]Aroldo Zanela[/b:4ee2e85e13] postou, usar uma tabela em um banco de dados. Dependendo da situação vc pode até usar um [b:4ee2e85e13]ClientDataSet [/b:4ee2e85e13]e trabalhar apenas em memória com as informações.
[]´s
Gostei + 0
31/01/2006
Motta
Este assunto já foi bem discutido aqui.
Gostei + 0
01/02/2006
Apontador
type
Pt_TAcesso=^TAcesso;
TAcesso=record
programa, hint:string;
status:integer;
ant,prox:PT_TAcesso;
end;
var
Acesso:Pt_TAcesso;
procedure alocar_ponteiro(var pt_aloc:pt_tacesso);
var
pt_tmp:pt_tacesso;
begin
pt_tmp:=pt_aloc;
new(pt_aloc);
pt_aloc^.ant:=pt_tmp;
it pt_tmp<>nil then
begin
pt_tmp^.prox:=pt_aloc;
end
else
begin
end;
end;
Begin
while inserir_novo_registro=true then
begin
aloc_pt(acesso);
end;
End.
a cada laço executado, vc terá um novo espaço na memória alocado p/ o registro pt_tacesso, que guarda em si mesmo o endereço do seu próximo e anterior, porém, nesse cógigo, vc terá q colocar algum comando dentro do laço while de saída, senão ele vai repetir infinitamente... o resto é contigo
Gostei + 0
01/02/2006
Apontador
Gostei + 0
01/02/2006
Leonardobhbr
Gostei + 0
01/02/2006
Aroldo Zanela
Colega,
Sem problemas. Quanto a identação, basta utilizar as TAGs [ code ] código[ /code ] (sem espaço entre as chaves) para exibir o código formatado.
Gostei + 0
01/02/2006
Apontador
program teste_tags_code; Begin showmessage(´teste de tags!!´); End.
Gostei + 0
01/02/2006
Rjun
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)