Ponteiros - Arrays, variaveis

Delphi

12/09/2013

Boa Tarde pessoal

Preciso de um help de vcs com os ponteiros, pois tenho uma variável qualquer q é um array e quero setar no ponteiro. Só q não entendi quando devo usar o ^ou @ e como seta a inicialização e o preenchimento dos mesmos. Podem em ajudar ou indicar um material q contenha as respectivas informações com mais clareza. Valeu.
var
variavel : array [0..511] of Byte;
ponteiros : array [0..511] of ^Byte;
begin
bla bla
end;



Alessandro Yamasaki

Alessandro Yamasaki

Curtidas 0

Respostas

Marco Salles

Marco Salles

12/09/2013


Boa Tarde pessoal

Preciso de um help de vcs com os ponteiros, pois tenho uma variável qualquer q é um array e quero setar no ponteiro. Só q não entendi quando devo usar o ^ou @ e como seta a inicialização e o preenchimento dos mesmos. Podem em ajudar ou indicar um material q contenha as respectivas informações com mais clareza. Valeu.
var
variavel : array [0..511] of Byte;
ponteiros : array [0..511] of ^Byte;
begin
bla bla
end;

hummmm

o @ utilizado como endereço
o ^ utilizado como Conteúdo porém pode ser utilizado como Ponteiro

Veja um definição

Pinteger é um Ponteiro para Integer , esta definido como

PInteger: : ^ Integer ; // Ponteiro para Integer;

Um exemplo

var
i:PInteger;
x:Integer;
begin
x:=5;  // conteudo de x igual a 5;
i:=@x ; // endereço de x;
i^:=4 ; //atribuição do conteudo 4 ao endereço referenciado pelo Ponteiro;
Showmessage(inttostr(X)) ;  


segundo exemplo .... Arrays

procedure TForm4.Button2Click(Sender: TObject);
var
  A: array[0..2] of Char;
  P: PChar; // PChar é ponteiro para Char
begin
  P := @A[0]; // pega ponteiro para o primeiro elemento no array
  P^ := 'O'; // mesmo que A[0] := ´O´
  P := P + 1; // avança para o próximo caractere no array
  P^ := 'i'; // mesmo que A[1] := ´i´
  P := P + 1; // avança para o próximo caractere no array
  P^ := '0'; // mesmo que A[2] := 0; isto termina a string
  Caption := A;
end;


Terceiro exemplo ... PONTEIRO PARA AARAYS

procedure TForm4.Button3Click(Sender: TObject);
type
  T = array[0..2] of Char;
var
  A:T;
  PA:^T; // Ponteiro para o Tipo T;
  i: Integer;
begin
  PA:=@A ;  //pega o ponteiro para o Array definido pela Variavel A
 PA^[0]:='O';  // atribuição do conteudo '0' ao endereço referenciado pelo Ponteiro;  PA^[0]:
 PA^[1]:='i';    // atribuição do conteudo 'i' ao endereço referenciado pelo Ponteiro;  PA^[1]:
 PA^[2]:='O';   // atribuição do conteudo 'O' ao endereço referenciado pelo Ponteiro;  PA^[2]:
 for i := Low(A) to High(A) do
   Showmessage(A[i]);  //  mostrando o conteudo de A[i]
end;



[]sds






GOSTEI 0
Alessandro Yamasaki

Alessandro Yamasaki

12/09/2013

Grato pela dicas Marco. Vamos vê aonde estou errando e tentar implementar corretamente.

Abraços
GOSTEI 0
Alessandro Yamasaki

Alessandro Yamasaki

12/09/2013

Marco ou alguem no forum, nao sei se vc pode me ajudar.

Preciso carregar um arquivo mp3 ou wav no buffer ou na memoria ou no ponteiro para utiliza-lo numa respectiva funcao q passo para uma dll. Qual a melhor solução e como passo este som no ponteiro?

Grato
GOSTEI 0
POSTAR