Bonjour,
J'utilise beaucoup le composant TVirtualTreeview qui , une fois qu'on le maitrise, permet de faire pas mal de choses sympa.
Néanmoins, un petit problème subsiste : l'utilisation de la fonction memcpy avec les données associées aux noeuds du virtualtreeview.
A chaque nœud, j'associe en général une structure composée de plusieurs membres.
Il m'arrive de devoir copier le contenu d'une structure dans une autre.
Dans ce cas, le plus simple d'après moi serait d'utiliser la fonction memcpy.
Malheureusement, cela semble poser problème et seul l'affectation membre par membre fonctionne !!!
Ex:
1 2 3 4 5 6 7 8 9 10
| typedef struct
{
int id;
char nom[30+1];
bool actif;
} TMaStruct;
typedef TMaStruct *pMaStruct;
Treeview->NodeDatasize = sizeof(TMaStruct); |
Pour un noeud donné, on récupère les données et on fait la copie comme ça :
1 2 3 4 5 6 7
| pMaStruct data = (pMaStruct)Treeview->GetNodeData(virtualnode);
TMaStruct copiedata;
copiedata.id = data->id;
strcpy(copiedata.nom, data->nom);
copiedata.actif = data->actif; |
Ne serait-ce pas plus simple de faire la copie comme ça ? :
memcpy(&copiedata, data, sizeof(TMaStruct));
Pourtant, ça ne fonctionne pas !
Certains d'entre vous ont-ils un avis sur la question ou bien ont-ils déjà réussi à utiliser le memcpy avec un virtualtreeview ?
Merci de votre aide,
Partager