Bonjour,
J'essais de copier les valeurs de mon pointeur dans un autre pointeur mais j'échoue lamentablement dans l'exercice (ce qui me confirme que les pointeurs ne m'aiment pas)
Contexte : j'appel une fenêtre pour modifier un enregistrement que je passe par un pointeur ; newTable (TTable étant une structure simple)
1 2 3 4 5 6 7 8 9 10 11 12 13
| function ScrTableEditor(Act : String; newTable : PTables) : Boolean;
begin
TableEditor := TTableEditor.Create(nil);
TableEditor.Act := Act;
//Initialisation enregistrement temporaire
New(TableEditor.p_Tables);
TableEditor.p_Tables^ := newTable^;
TableEditor.ShowModal;
Result := TableEditor.IsVal;
TableEditor.Free;
end; |
J'essais de créer un nouveau pointeur : TableEditor.p_Tables (avec new, sans rien, avec GetMem ..., j'ai tout testé)
Ensuite je veux affecter à mon pointeur les même valeurs que dans newTable
p_Tables^ := newTable^ ou copymemorie , j'ai testé les deux.
Avant mon showModal les pointeurs ont bien des adresses différentes, et les même valeurs.
Je fais mes modifs dans mon formulaire, lorsque je reviens dans cette fonction à la fermeture de ma fenêtre , mes deux pointeurs ont toujours des adresses différentes, mais ce que je comprend pas c'est qu'ils ont tous les deux les mêmes valeurs modifiées !.
![:aie:](https://www.developpez.net/forums/images/smilies/aie.gif)
Je fais pourtant ma duplication de pointeur justement pour que mes valeurs d'entrées ne soient pas modifiées. Je comprend pas
![:aie:](https://www.developpez.net/forums/images/smilies/aie.gif)
J'ai bien des pointeur avec des adresses différentes mais si j'en modifie un, le 2eme est également modifié ?? Y a une subtilité dans mes copies de valeurs que je ne connais pas ?
Partager