<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2016-08-17 18:45 GMT+02:00 silvioprog <span dir="ltr"><<a href="mailto:silvioprog@gmail.com" target="_blank">silvioprog@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><div class="gmail_quote">I changed it to a function:<br></div></span><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">  function ExtendedHasher(constref AValue: string): UInt32;</div><div class="gmail_extra">  begin</div><div class="gmail_extra">    TDefaultHashFactory.GetHashLis<wbr>t(Pointer(AValue),</div><div class="gmail_extra">      Length(AValue) * SizeOf(Char), @Result);</div><div class="gmail_extra">  end;</div></div></div></div></blockquote><div><br></div><div>Still bad implementation (see my previous message). Is highly probable to obtain different hashes for 'foo' and 'Foo'. Usage of GetHashList in that context is also improper, GetHashList is generally dedicated for more complicated structures (for example for cuckoo hashing). The proper code is:</div><div><br></div><div><div class="gmail_extra">  function MyHasher(constref AValue: string): UInt32;</div><div class="gmail_extra">  var</div><div class="gmail_extra">    temp: string;</div><div class="gmail_extra">  begin</div><div class="gmail_extra">    <span style="font-size:12.8px">temp := LowerCase(AValue);</span></div><div class="gmail_extra">    Result := TDefaultHashFactory.GetHashCode(Pointer(<span style="font-size:12.8px">temp</span>), Length(<span style="font-size:12.8px">temp</span>) * SizeOf(Char), 0);</div><div class="gmail_extra">  end;</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_extra"></div><div class="gmail_extra">because the "Error: Incompatible type for arg no. 2: Got "ExtendedHasher(constref AnsiString;PDWord);", expected "<procedure variable type of function(constref AnsiString):DWord;Register>"".</div><div class="gmail_extra"><br></div></div></div></blockquote><div><br></div><div>Point for you, that was code from my memory, sorry ;) ExtendedHasher in presented form is dedicated for TExtendedEqualityComparer<T>.Construct(...) which is used for THashMap<K,V> (THashMap is much faster than TDictionary for big data)</div></div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Best regards,<br>Maciej Izak</div></div></div>
</div></div>