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 !.
Je fais pourtant ma duplication de pointeur justement pour que mes valeurs d'entrées ne soient pas modifiées. Je comprend pas
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