PDA

Ver la Versión Completa : Duda en HashTable


marceloalegre
26-02-2007, 17:56:30
Buenos Dias:

Les molesto para hacerles una consulta basica sobre la implementación que ofrece dephi de las HashTables.
Me encontre con la clase THashedStringList (de la Inifiles) y me arme el sig. ejemplo:


procedure TForm1.Button1Click(Sender: TObject);
var
HashTable:THashedStringList;
indice:Integer;
begin
HashTable:= THashedStringList.create;
HashTable.Add('Marcelo');
HashTable.Add('juancito');
HashTable.Add('pedrito');
HashTable.Find('juancito',Indice);
showmessage(HashTable.ValueFromIndex[Indice]);
end;


Donde cargo 3 elementos y luego busco uno y lo muestro en base a su indice (clave).. Parece que funciona, pero siempre no me muestra la primera letra :) ... por ejemplo si busco "juancito" me retorna uancito... hay algo que lo estoy haciendo mal seguramente, no encuentro ejemplos en la ayuda..

Me darian una mano? Gracias...!

seoane
26-02-2007, 18:15:29
En vez de usar:

Showmessage(HashTable.ValueFromIndex[Indice]);


Debes utilizar:

Showmessage(HashTable[Indice]);


Por otro lado, si quieres sacar ventaja de utilizar un THashedStringList debes usar el método IndexOf en vez de Find, de lo contrario no encontraras ninguna diferencia con un TstringList:

Indice:= HashTable.IndexOf('juancito');
if Indice <> -1 then
Showmessage(HashTable[Indice]);

marceloalegre
26-02-2007, 21:53:31
Perfecto Domingo! va muy bien!. De nuevo, y como siempre, Gracias!