Fórum Ponteiro/Record #311191

31/01/2006

0

é o seguinte:
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

Pedih

Responder

Posts

31/01/2006

Aroldo Zanela

Colega,

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;



Responder

Gostei + 0

31/01/2006

Pedih

[quote:b5163dc6a6=´Aroldo Zanela´]Colega,

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;
[/quote:b5163dc6a6]

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)???


Responder

Gostei + 0

31/01/2006

Aroldo Zanela

Colega,

O correto seria uma tabela num banco de dados. Tem problema quanto a isso?


Responder

Gostei + 0

31/01/2006

Michael

Vc deve usar uma [b:4ee2e85e13]array dinâmica[/b:4ee2e85e13]:

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


Responder

Gostei + 0

31/01/2006

Motta

Pelo que entendi ele que uma camada entre o BD e os objetos , uma camada de persistência, creio.

Este assunto já foi bem discutido aqui.


Responder

Gostei + 0

01/02/2006

Apontador

aroldo, creio q seja isso que esteja procurando:

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


Responder

Gostei + 0

01/02/2006

Apontador

aroldo, me desculpe, na mensagem acima, qdo me referi ao seu nome, me enganei, a resposta acima é p/ pedih. e desculpem por nao colocar código dentado, agora que vi q vcs só usam esse padão, mas vou me acostumar...


Responder

Gostei + 0

01/02/2006

Leonardobhbr

Crie um Classe e um listbox para poder filtrar etc..


Responder

Gostei + 0

01/02/2006

Aroldo Zanela

aroldo, me desculpe, na mensagem acima, qdo me referi ao seu nome, me enganei, a resposta acima é p/ pedih. e desculpem por nao colocar código dentado, agora que vi q vcs só usam esse padão, mas vou me acostumar...

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.


Responder

Gostei + 0

01/02/2006

Apontador

obrigado pela dica amigo, já vou testa-la:
program teste_tags_code;
 Begin
  showmessage(´teste de tags!!´);
 End.



Responder

Gostei + 0

01/02/2006

Rjun

Isso não poderia ser montando com uma estrutura de TList? No C# utilizo coleções para fazer isso.


Responder

Gostei + 0

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

Aceitar