¡Hola!
Me ha pasado algo curioso que no encuentro explicación. Te cuento.
Tengo una función en la que registro en una variable datos de la
siguiente forma
CMap <_TCHAR *,_TCHAR *, PROPVARIANT, PROPVARIANT &>
m_Propiedad;
m_Propiedad[sps.lpwstrName] = propVar[0]; Siendo
propVar[0] un PROPVARIANT y el sps.lpwstrName un string.
Bien, hasta aquí todo va bien hasta que llegamos al punto de recoger
el dato en función de su clave:
if (! m_Propiedad.Lookup (_T("Diamante"), pp)) return (false);
Despues de comprobar que dicha clave está definida en m_Propiedad y que la
busqueda es totalmente infructuosa por parte del Lookup, se me ocurre
recorrer el array mediante:
for (pos = m_Propiedad.GetStartPosition(); pos != NULL;)
m_Propiedad.GetNextAssoc (pos, key2, pp);
hago la misma busqueda, pero ahora con el key2 recogido.
if (! m_Propiedad.Lookup (key2, pp)) return (false);
La sorpresa es que de esta forma funciona de vicio.
Indago mas y mas y compruebo que al hacer la busqueda con el lookup, primero
se practica una ¿fantastica? operación sobre la dirección del puntero de la
variable (key2) con un tal hashkey, y claro, la única forma de que el lookup
de con el elemento deseado es mediante la dirección a la cual apunta. muy
util ¿no?, puessssssssssssssss no, o sea que no puedo hacer busquedas del
tipo
if (! m_Propiedad.Lookup (_T("Diamante"), pp)) return (false);
key = _T("Diamante");
if (! m_Propiedad.Lookup (key, pp)) return (false);
Muy útil, si, muy util
Leer las respuestas