Pointeurs!

Samou85 Messages postés 46 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 7 octobre 2009 - 29 juin 2009 à 13:07
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 30 juin 2009 à 00:07
Bonjour à tous!

j'ai un tableau de pointeur "T" et et à un moment donné je dois supprimer certaine cases de ce tableau, je voudrais savoir si le fait de faire par exemple:

 Var
Point : ^integer;
T: Array of Point;
i:integer;
Begin
SetLength(T,25);
i:=5;
 T[i]:=T[i+1];
for j:=i+1 to (n-1) do
begin
T[j]:=T[j+1];
end;
 T[n]:=nil;       //tel que "n" est sensé etre l'indice de la dernière case
end;
est ce que le code précédent supprime réellement la case (5) et décale les autres ou bien ça ne marche pas lorsque il s'agit de pointeurs???


Et si ce n'est pas le cas alors comment faire pour supprimer une case de ce tableau de pointeurs???


MERCI d'avance!!!

2 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
29 juin 2009 à 13:21
Salut,

pour supprimer une valeur et décaler les autres dans un tableau il faut passer par Move !!!

 
@+
Cirec

<hr siz="" />
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
30 juin 2009 à 00:07
il te faut une methode POP/PUSH pour ton tableau :

type
  pPnt = ^Pnt;
  Pnt = integer;
  TArPPnt = array of  pPnt;

const
  SizeOfPnt = SizeOf(Pnt);

function PushPnt(const AValue : Pnt; var ATap : TArPPnt): integer;
var ptr : pPnt;
begin
  result := Length(ATap);
  SetLength(ATap, result+1);
  new(ptr);
  ptr^ := AValue;
  ATap[result] := ptr;
end;

function PopPnt(const Index: integer; var ATap: TArPnt): integer;
var ptr : pPnt;
begin
  result := High(ATap);
  ptr := ATap[Index];
  Dispose(ptr);
  if Index < result then
    CopyMemory(@ATap[Index], @ATap[Index+1], (result-Index+1)*SizeOfPnt);
  SetLength(ATAp, result);
end;

ou encore, deriver un objet TList avec le type pPnt a la place des declaration pointer.

<hr size="2" width="100%" />
0
Rejoignez-nous