<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-02-07 waldo kitty <span dir="ltr"><<a href="mailto:wkitty42@windstream.net" target="_blank">wkitty42@windstream.net</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>On 2/6/2014 1:47 PM, Jim Leonard wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
On 2/6/2014 11:04 AM, waldo kitty wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
ahh... i see what you are doing... you are passing the pointer to the<br>
whole record instead of just the needed key... hummm... i'll have to<br>
think about that and how to do it in my app... right now i'm only<br>
passing the necessary key because the record is 'large'... but then<br>
again... some thought and meditation is necessary ;)<br>
</blockquote>
<br>
Not much thought required -- a pointer to the record is 4 bytes, no matter how<br>
large the record is.<br>
</blockquote>
<br></div>
yep! i realized this when i was going back thru the code cleaning it up and letting the other side of my brain wander about in its own world ;)<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
In fact, it's probably faster than what you're doing, and more flexible.<br>
</blockquote>
<br></div>
i was sending the pointer to field's contents ;)<br>
<br>
[time passes]<br>
<br>
well, i thought i was... my KeyOf routine does a cast using<br>
<br>
  PTLERec(Item)^.catnbr<br>
<br>
but my (TLE) compare is apparently only sending the pointer to the catnbr string because the cast there is simply<br>
<br>
  PString(Key1)^<br>
and<br>
  PString(Key2)^<br>
<br>
the only place i understand that my (TTLEColl) compare is in play is in<div><br>
<br>
  If NOT Search(KeyOf(Item), I) OR Duplicates Then  // Item valid<br>
<br></div>
from the TTLEColl.Insert routine override that i posted previously... that Insert routine is taking a pointer to an entire record...<br>
<br>
so now i'm a bit confused but it has been a long day... again... :/</blockquote></div><br clear="all"></div><div class="gmail_extra">This makes sense... at least in your previous version: I guess catnbr is a string. Compare uses whatever KeyOf returns, and since KeyOf returns the address of a string, Compare handles the keys as such. To compare more than 1 field, the simplest way would be for KeyOf to return the address of the TLERec, which is the behavior of TSortedCollection.KeyOf <a href="http://lazarus-ccr.sourceforge.net/docs/rtl/objects/tsortedcollection.keyof.html">http://lazarus-ccr.sourceforge.net/docs/rtl/objects/tsortedcollection.keyof.html</a> . So IMO you should simply remove your implementation of KeyOf and edit Compare so that it receives PTLERec and uses the relevant fields instead of a simple string.<br>


</div><div class="gmail_extra"><br>-- <br>Frederic Da Vitoria<br>(davitof)<br><br>Membre de l'April - « promouvoir et défendre le logiciel libre » - <a href="http://www.april.org" target="_blank">http://www.april.org</a><br>



</div></div>