dire que j'ai l'enregistrement suivant:TDictionary utilisant des pointeurs
type
TTest = record
test1 : TTest1;
test2 : TTest2;
test3 : TTest3;
end;
pTTest = ^TTest;
TDictestDictionary = TDictionary<integer,pTTest>;
testDictionary : TDictestDictionary
aura-t-il suffisant pour écrire
testDictionary := TDictionary<integer,pTTest>.Create;
puis ajoutez les articles comme:
testDictionary.AddOrSetValue(1,pValue);
ou besoin initialiser pValue?
Mais ce qui arrive quand:
GetMem(pValue, Value);
testDictionary.AddOrSetValue(1,pValue);
FreeMem(pValue);
seront les éléments supprimer les données pointées par pValue?
S'il vous plaît Aide
En outre, sur la même ligne de pensée, je peux avoir quelque chose comme ceci:
Type
myClass = class(TObject)
private
FTest : TDictestDictionary ;
public
property propFTest : TDictestDictionary read getFTest() write setFTest()
mais alors comment j'écris getFTest() setFTest()
Aide. Merci
Mais pourquoi sur Terre voulez-vous stocker les pointeurs? –
@Jens, parce que faire une copie des documents pourrait être inutile et difficile à maintenir? Imaginez que vous pouvez stocker les enregistrements dans un tableau simple et faire autant de * vues * que vous le souhaitez en utilisant des pointeurs. Oui, vous devez les synchroniser avec ces * vues *, mais vous devrez le faire aussi pour les * vues * ayant également des copies d'enregistrements. – TLama
@JensBorrisholt sans code de pointeurs comme 'testDictionary [1] .test1 = ...' va créer une copie de l'enregistrement et n'affectera pas la valeur dans le dictionnaire. Dans de tels cas, vous devez stocker les pointeurs d'enregistrement – teran