<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:st1 = 
"urn:schemas-microsoft-com:office:smarttags"><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.5346.5" name=GENERATOR><!--[if !mso]>
<STYLE>v\:* {
        BEHAVIOR: url(#default#VML)
}
o\:* {
        BEHAVIOR: url(#default#VML)
}
w\:* {
        BEHAVIOR: url(#default#VML)
}
.shape {
        BEHAVIOR: url(#default#VML)
}
</STYLE>
<![endif]--><o:SmartTagType name="place" 
namespaceuri="urn:schemas-microsoft-com:office:smarttags"></o:SmartTagType><o:SmartTagType 
name="PersonName" 
namespaceuri="urn:schemas-microsoft-com:office:smarttags"></o:SmartTagType><!--[if !mso]>
<STYLE>st1\:* {
        BEHAVIOR: url(#default#ieooui)
}
</STYLE>
<![endif]-->
<STYLE>@font-face {
        font-family: SimSun;
}
@font-face {
        font-family: Tahoma;
}
@font-face {
        font-family: @SimSun;
}
@page Section1 {size: 612.0pt 792.0pt; margin: 72.0pt 90.0pt 72.0pt 90.0pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
P {
        FONT-SIZE: 12pt; MARGIN-LEFT: 0cm; MARGIN-RIGHT: 0cm; FONT-FAMILY: "Times New Roman"; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto
}
SPAN.EmailStyle18 {
        COLOR: windowtext; FONT-FAMILY: Arial; mso-style-type: personal
}
SPAN.EmailStyle19 {
        COLOR: navy; FONT-FAMILY: Arial; mso-style-type: personal
}
SPAN.EmailStyle20 {
        COLOR: navy; FONT-FAMILY: Arial; mso-style-type: personal
}
SPAN.EmailStyle21 {
        COLOR: navy; FONT-FAMILY: Arial; mso-style-type: personal
}
SPAN.EmailStyle23 {
        COLOR: navy; FONT-FAMILY: Arial; mso-style-type: personal-reply
}
DIV.Section1 {
        page: Section1
}
</STYLE>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]--></HEAD>
<BODY lang=EN-US vLink=purple link=blue bgColor=white>
<DIV><SPAN class=669493504-16052006><FONT face=Arial color=#0000ff size=2>I am 
using the XP Themes component, which is great.&nbsp; This gives rounded buttons 
with a faint orange mouse over effect - its a standard XP feature.&nbsp; However 
I have also see other effects which I like which I haven't yet 
got:</FONT></SPAN></DIV>
<DIV><SPAN class=669493504-16052006><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=669493504-16052006><FONT face=Arial color=#0000ff size=2>I am 
wondering about the buttons and menu items widely available in Windows XP, for 
instance in Outlook 2002 and in the Delphi 2006 IDE - buttons that are invisible 
or flat with a mouse over blue highlight and similar blue highlights on the main 
menu items current item.</FONT></SPAN></DIV>
<DIV><SPAN class=669493504-16052006><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=669493504-16052006><FONT face=Arial color=#0000ff size=2>Are 
these available in D2006?</FONT></SPAN></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=669493504-16052006>(Up to 
now I have been using my own modified tjbclColorbutton which has full control 
over foreground and background colour, and also mouse-over foreground and 
background colour and optional bolding of text with mouse over.....looks ok if I 
do say so myself.&nbsp;&nbsp; Available&nbsp;as giveaway if&nbsp;anyone 
interested).&nbsp; The XP buttons I have seen in the IDE and Outlook I 
do&nbsp;prefer though - as they add border effects.</SPAN></FONT></DIV>
<DIV class=Section1>
<P class=MsoAutoSig align=left>John Bird</P>
<P class=MsoAutoSig><FONT face=Arial size=2>email</FONT></P>
<P class=MsoAutoSig><FONT face=Arial size=2>&nbsp;<A 
href="mailto:john@jbcl.co.nz">john@jbcl.co.nz</A></FONT></P>
<P class=MsoAutoSig><FONT face=Arial size=2>&nbsp;</FONT><A 
href="mailto:johnkbird@paradise.net.nz">johnkbird@paradise.net.nz</A></P>
<P class=MsoAutoSig><FONT face=Arial size=2>Expert in&nbsp;Beyond 
Software</FONT></P>
<P class=MsoAutoSig>Ph land (03)384-4527&nbsp; mobile&nbsp;(027)484-4528</P>
<P class=MsoAutoSig>92 Soleares Ave, Mt Pleasant</P>
<P class=MsoAutoSig>Christchurch</P>
<P class=MsoAutoSig><o:p><FONT face=Arial size=2>Web <A 
href="http://www.jbcl.co.nz/">www.jbcl.co.nz</A></FONT></o:p></P>
<P class=MsoAutoSig><o:p><FONT face=Arial size=2></FONT></o:p>&nbsp;</P>
<P class=MsoAutoSig><o:p><!--StartFragment -->&nbsp;</o:p></P></DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
  <DIV></DIV>
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
  face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> 
  delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] <B>On 
  Behalf Of </B>Stefan Mueller<BR><B>Sent:</B> Tuesday, 16 May 2006 2:15 
  p.m.<BR><B>To:</B> 'NZ Borland Developers Group - Delphi 
  List'<BR><B>Subject:</B> RE: [DUG] Discussion &amp; 
  Donation<BR><BR></FONT></DIV>
  <DIV class=Section1>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Nhmm .. surprising. 
  The &#8220;for&#8221; loop should evaluate lower/upper bounds only once .. while the 
  &#8220;while&#8221; statement always has to evaluate the expression for each iteration. 
  This doesn&#8217;t make sense ;-/<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Anyway .. a bit busy 
  with other things rather than exploring the &#8220;why&#8221;. A russian guy cracked my 
  licenseprotection (not that hard) last weekend and is offering the crack to my 
  customers on my own support forums ( <A 
  href="http://www.orcl-toolbox.com/forum_new2/forum_posts.asp?TID=341&amp;PN=1">http://www.orcl-toolbox.com/forum_new2/forum_posts.asp?TID=341&amp;PN=1</A> 
  ). Still trying to get on the good site with him(talking on email) but 
  patience is starting to run out.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <DIV>
  <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT face=Arial color=black 
  size=2><SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial">Kind 
  Regards<SPAN class=grame>,</SPAN><BR>Stefan Mueller </SPAN></FONT><FONT 
  face=Arial color=#666699 size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: #666699; FONT-FAMILY: Arial"><BR><BR></SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
  face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
  <HR tabIndex=-1 align=center width="100%" SIZE=3>
  </SPAN></FONT></DIV>
  <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT 
  face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> 
  delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] <B><SPAN 
  style="FONT-WEIGHT: bold">On Behalf Of </SPAN></B>Todd Martin<BR><B><SPAN 
  style="FONT-WEIGHT: bold">Sent:</SPAN></B> Tuesday, 16 May 2006 1:42 
  p.m.<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> <st1:PersonName 
  w:st="on">NZ Borland Developers Group - <st1:place 
  w:st="on">Delphi</st1:place> List</st1:PersonName><BR><B><SPAN 
  style="FONT-WEIGHT: bold">Subject:</SPAN></B> Re: [DUG] Discussion &amp; 
  Donation</SPAN></FONT><o:p></o:p></P></DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <DIV>
  <P><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Kylie 
  </SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">I&nbsp;re-ran your timed 
  loop&nbsp;with a&nbsp;minor change to IndexOfTodd(). I removed the CurrentName 
  variable.</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">function 
  IndexOf_todd(AName : String; AStringArray : array of string) : 
  Integer;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">var<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; NameIndex, 
  FoundIndex : Integer;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">//&nbsp; CurrentName 
  : String;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">begin<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; NameIndex := 
  0;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; FoundIndex := 
  0;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; while 
  (NameIndex &lt; length(AStringArray)) and (FoundIndex = 0) 
  do<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
  begin<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">//&nbsp;&nbsp;&nbsp; 
  CurrentName := AStringArray[NameIndex];<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">//&nbsp;&nbsp;&nbsp; 
  if SameText(AName,CurrentName) then</SPAN></FONT><FONT color=navy><SPAN 
  style="COLOR: navy"><o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp; if 
  SameText(AName,AStringArray[NameIndex]) then<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
  begin<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  FoundIndex := NameIndex;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
  end;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
  inc(NameIndex);<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
  end;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; Result := 
  FoundIndex;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">end;</SPAN></FONT><o:p></o:p></P>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Now compare the 
  results</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Button 1</SPAN></FONT><FONT 
  size=2><SPAN style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Todd 
  1101ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Stef 
  1142ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test StringList 
  921ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Button 2</SPAN></FONT><FONT 
  size=2><SPAN style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Todd 
  2553ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Stef 
  2534ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test StringList 
  230ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">So Stefan's break statement is 
  slower in the first case and adds a negligible time saving in the second case. 
  Personally I hate break and continue statements, so I never use 
  them.</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The string list still looks 
  impressive though.</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">But look what happens when the 
  list size&nbsp;is increased&nbsp;from 200 to 2000 items in button 2 
  click.</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">--using 
  TStringList</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Todd 
  23023ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Stef 
  23554ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test StringList 
  361ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">--using 
  THashedStringList</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Todd 
  22703ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test Stef 
  22632ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test StringList 
  110ms</SPAN></FONT><FONT size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt">----- Original Message ----- 
  <o:p></o:p></SPAN></FONT></P></DIV>
  <BLOCKQUOTE 
  style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 3pt; PADDING-BOTTOM: 0cm; MARGIN: 5pt 0cm 5pt 3pt; BORDER-LEFT: black 1.5pt solid; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none">
    <DIV style="font-color: black">
    <P class=MsoNormal style="BACKGROUND: #e4e4e4"><B><FONT face=Arial 
    size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">From:</SPAN></FONT></B><FONT 
    face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <A 
    title=kyley@harrissoftware.com href="mailto:kyley@harrissoftware.com">Kyley 
    Harris</A> <o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">To:</SPAN></FONT></B><FONT 
    face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <A 
    title=delphi@ns3.123.co.nz href="mailto:delphi@ns3.123.co.nz">NZ Borland 
    Developers Group - Delphi List</A> <o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Sent:</SPAN></FONT></B><FONT 
    face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> Monday, 
    May 15, 2006 2:44 PM<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Subject:</SPAN></FONT></B><FONT 
    face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> RE: 
    [DUG] Discussion &amp; Donation<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P></DIV>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Hmm your comment 
    that doing it that way intrigued me enough to test it. Seeing as I like to 
    make things quicker. You were right in certain cases. 
    <o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Given the following 
    code.<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">TEST 1. High 
    iterations on a small set 5 elements<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Todds loop took 
    150ms, <o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Stefans loop took 
    100ms<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">StringList took 
    108ms<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">But given test 2 
    high itereations on a larger list. 200 elements Which is more likely when 
    dealing with messaging<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Todds took 4125 
    ms<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Stefans took 
    2641ms<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Stringlist took 
    297ms<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">So I think I will 
    stick with sorted stringlists. Because then you can also attach a data 
    object to it for retrieving the value, rather than relying on the index 
    position being the value, which I find to be a very bad 
    idea<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">unit 
    Unit1;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">interface<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">uses<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; Windows, 
    Messages, SysUtils, Variants, Classes, Graphics, Controls, 
    Forms,<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; Dialogs, 
    StdCtrls;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">type<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; TForm1 = 
    class(TForm)<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Button1: TButton;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Button2: TButton;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    procedure Button1Click(Sender: TObject);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    procedure Button2Click(Sender: TObject);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    private<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    { Private declarations }<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    public<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    { Public declarations }<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">var<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; Form1: 
    TForm1;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">implementation<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">uses<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    uHssStopWatch;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">{$R 
    *.dfm}<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">function 
    IndexOf_stef(AName : String; AStringArray : array of string) : 
    Integer;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">var<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; i : 
    Integer;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; result := 
    -1;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; for i := 0 
    to high(AStringArray) do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    if SameText(AName, AStringArray[i]) then<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    result := i;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    break;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">function 
    IndexOf_todd(AName : String; AStringArray : array of string) : 
    Integer;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">var<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; NameIndex, 
    FoundIndex : Integer;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; CurrentName 
    : String;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; NameIndex := 
    0;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; FoundIndex 
    := 0;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; while 
    (NameIndex &lt; length(AStringArray)) and (FoundIndex = 0) 
    do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    CurrentName := AStringArray[NameIndex];<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    if SameText(AName,CurrentName) then<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    FoundIndex := NameIndex;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    inc(NameIndex);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; Result := 
    FoundIndex;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">procedure 
    TForm1.Button1Click(Sender: TObject);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">var<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s:TStringList;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    data:TStringList;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1:array of 
    string;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    i:integer;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    initialize(a1);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; s := 
    TStringList.Create;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    setlength(a1,5);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1[0] := 
    'test';<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1[1] := 
    'testa';<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1[2] := 
    'testb';<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1[3] := 
    'testc';<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1[4] := 
    'testd';<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.CaseSensitive := false;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; s.Sorted := 
    true;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.add(a1[0]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.add(a1[1]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.add(a1[2]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.add(a1[3]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.add(a1[4]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; with 
    THssStopWatch.Start('Test Todd') do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    try<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    for i := 0 to 1000000 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    case i mod 5 of<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    0: Assert(SameText('test',a1[ 
    IndexOf_todd('TEST',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    1: 
    Assert(SameText('testa',a1[IndexOf_todd('TESTa',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    2: 
    Assert(SameText('testb',a1[IndexOf_todd('TESTb',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    3: 
    Assert(SameText('testc',a1[IndexOf_todd('TESTc',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    4: 
    Assert(SameText('testd',a1[IndexOf_todd('TESTd',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    finally<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Free;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; with 
    THssStopWatch.Start('Test Stef') do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    try<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    for i := 0 to 1000000 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    case i mod 5 of<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    0: Assert(SameText('test',a1[ 
    IndexOf_stef('TEST',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    1: 
    Assert(SameText('testa',a1[IndexOf_stef('TESTa',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    2: 
    Assert(SameText('testb',a1[IndexOf_stef('TESTb',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    3: 
    Assert(SameText('testc',a1[IndexOf_stef('TESTc',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    &nbsp;&nbsp;4: 
    Assert(SameText('testd',a1[IndexOf_stef('TESTd',a1)]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    finally<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Free;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; with 
    THssStopWatch.Start('Test StringList') do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    try<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    for i := 0 to 1000000 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    case i mod 5 of<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    0: 
    Assert(SameText('test',s[s.IndexOf('test')]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    1: 
    Assert(SameText('testa',s[s.IndexOf('testa')]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    2: 
    Assert(SameText('testb',s[s.IndexOf('testb')]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    3: 
    Assert(SameText('testc',s[s.IndexOf('testc')]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    4: 
    Assert(SameText('testd',s[s.IndexOf('testd')]));<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    finally<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Free;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">procedure 
    TForm1.Button2Click(Sender: TObject);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">var<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s:TStringList;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    data:TStringList;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; a1:array of 
    string;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    i,x:integer;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    initialize(a1);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; s := 
    TStringList.Create;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    setlength(a1,200);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    s.CaseSensitive := false;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; s.Sorted := 
    true;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; for i := 0 
    to 199 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    a1[i] := 'test'+inttostr(i);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    s.add(a1[i]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; with 
    THssStopWatch.Start('Test Todd') do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    try<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    for i := 0 to 100000 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    x := IndexOf_Todd(a1[i mod 200],a1);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    finally<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Free;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; with 
    THssStopWatch.Start('Test Stef') do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    try<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    for i := 0 to 100000 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    x := IndexOf_Stef(a1[i mod 200],a1);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    finally<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Free;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; with 
    THssStopWatch.Start('Test StringList') do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    try<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    for i := 0 to 100000 do<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    x := s.IndexOf(a1[i mod 200]);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    finally<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    Free;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">end..<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <DIV>
    <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
    face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
    <HR tabIndex=-1 align=center width="100%" SIZE=2>
    </SPAN></FONT></DIV>
    <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT 
    face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> 
    delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] <B><SPAN 
    style="FONT-WEIGHT: bold">On Behalf Of </SPAN></B>Stefan Mueller<BR><B><SPAN 
    style="FONT-WEIGHT: bold">Sent:</SPAN></B> Monday, 15 May 2006 1:36 
    p.m.<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> '<st1:PersonName 
    w:st="on">NZ Borland Developers Group - <st1:place 
    w:st="on">Delphi</st1:place> List</st1:PersonName>'<BR><B><SPAN 
    style="FONT-WEIGHT: bold">Subject:</SPAN></B> RE: [DUG] Discussion &amp; 
    Donation</SPAN></FONT><o:p></o:p></P></DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Hi 
    Todd,<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Here is how I usually write such 
    scanning loops. Should be a bit faster than yours and less confusing (less 
    juggling around with variables) &#8230; and less error prone (raises exceptions if 
    AName can&#8217;t be found):<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">function IndexOf(AName : String; 
    AStringArray : array of string) : Integer;<BR>var<BR>&nbsp; i : 
    Integer;<BR>begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; result := 
    -1;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; for i := 0 to 
    high(AStringArray) do<BR>&nbsp; begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;if 
    SameText(AName, AStringArray[i]) 
    then<BR>&nbsp;&nbsp;&nbsp;&nbsp;begin<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    result := i;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    break;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; 
    end;<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; if result := -1 then 
    <o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; &nbsp;&nbsp;raise 
    exception.create(&#8216;String &#8217;+ AName +&#8217; not found in 
    array!&#8217;);<o:p></o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">end;</SPAN></FONT>&nbsp;<o:p></o:p></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <DIV>
    <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT face=Arial color=black 
    size=2><SPAN 
    style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial">Regards<SPAN 
    class=grame>,</SPAN><BR>Stefan</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
    face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
    <HR tabIndex=-1 align=center width="100%" SIZE=3>
    </SPAN></FONT></DIV>
    <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
    style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT 
    face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> 
    delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] <B><SPAN 
    style="FONT-WEIGHT: bold">On Behalf Of </SPAN></B>Todd Martin<BR><B><SPAN 
    style="FONT-WEIGHT: bold">Sent:</SPAN></B> Monday, 15 May 2006 12:55 
    p.m.<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> <st1:PersonName 
    w:st="on">NZ Borland Developers Group - <st1:place 
    w:st="on">Delphi</st1:place> List</st1:PersonName><BR><B><SPAN 
    style="FONT-WEIGHT: bold">Subject:</SPAN></B> Re: [DUG] Discussion &amp; 
    Donation</SPAN></FONT><o:p></o:p></P></DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">3) Okay. Good point. I didn't 
    pick up on this, as you hadn't marked the procedures as virtual, but I guess 
    that can always be added later without breaking&nbsp;existing 
    code.</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">4) Have you 
    considered&nbsp;RegisterIntegerConsts() for converting message integers to 
    text?</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Or failing that I often use 
    something like this</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">type</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">TMessageType = 
    (mtUnknown,mtChange,mtSave,mtLoad)</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">const</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp; MessageTypeToText : 
    array[TMessageType ] of string = ('Unknown','Change','Save','Load');&nbsp; 
    </SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">That way, whenever I add an 
    enumeration, I have to also add an equivalent string 
    description.</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">To convert the text back to an 
    enumerated type, I just use a standard procedure to find the index of the 
    text in the array. By making the first enumeration unknown/default I always 
    get a meaningful result when casting the integer back to a 
    type.</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Type := 
    TMessageType(IndexOf(MessageText,MessageTypeToText);</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">function IndexOf(AName : String; 
    AStringArray : array of string) : Integer;<BR>var<BR>&nbsp; NameIndex, 
    FoundIndex : Integer;<BR>&nbsp; CurrentName : String;<BR>begin<BR>&nbsp; 
    NameIndex := 0;<BR>&nbsp; FoundIndex := 0;<BR>&nbsp; while (NameIndex &lt; 
    length(AStringArray)) and (FoundIndex = 0) do<BR>&nbsp; 
    begin<BR>&nbsp;&nbsp;&nbsp; CurrentName := 
    AStringArray[NameIndex];<BR>&nbsp;&nbsp;&nbsp; if 
    SameText(AName,CurrentName) then<BR>&nbsp;&nbsp;&nbsp; 
    begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FoundIndex := 
    NameIndex;<BR>&nbsp;&nbsp;&nbsp; end;</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp; 
    inc(NameIndex);<BR>&nbsp; end;</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp; Result := 
    FoundIndex;<BR>end;</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">However, I see your point 
    about&nbsp;streaming&nbsp;numbers 
    to&nbsp;XML</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp; &nbsp; 
    </SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face=Arial size=2><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Todd.</SPAN></FONT><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
    <BLOCKQUOTE 
    style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 3pt; PADDING-BOTTOM: 0cm; MARGIN: 5pt 0cm 5pt 3pt; BORDER-LEFT: black 1.5pt solid; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none">
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">----- Original Message ----- 
      <o:p></o:p></SPAN></FONT></P></DIV>
      <DIV style="font-color: black">
      <P class=MsoNormal style="BACKGROUND: #e4e4e4"><B><FONT face=Arial 
      size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">From:</SPAN></FONT></B><FONT 
      face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <A 
      title=kyley@harrissoftware.com 
      href="mailto:kyley@harrissoftware.com">Kyley Harris</A> 
      <o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">To:</SPAN></FONT></B><FONT 
      face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <A 
      title=delphi@ns3.123.co.nz href="mailto:delphi@ns3.123.co.nz">NZ Borland 
      Developers Group - Delphi List</A> <o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Sent:</SPAN></FONT></B><FONT 
      face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> 
      Monday, May 15, 2006 11:05 AM<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Subject:</SPAN></FONT></B><FONT 
      face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> RE: 
      [DUG] Discussion &amp; Donation<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P></DIV>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Thank.<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Point 1/ Fair 
      enough<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Point 2/ correct 
      . I had written that bit early on before I realized I could break it down 
      correctly with TMethdo.code and TMethod.Data and I haven&#8217;t fully 
      refactored it yet. I&#8217;ve removed it now.<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Point 3/ Because 
      you cant do anything with a bunch of procedures. Ie it is not portable. 
      Class functions can be overridden. You don&#8217;t need to use 
      TNotifier.AddListener,<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">&nbsp;You could 
      have for example add a meta class and a classvariable to the global, Var 
      NotifierClass:TNotiferClass = TNotifer. I then use this for accessing the 
      functions and down the track in some cases or applications you may wish to 
      modify how it works, without effecting All the other apps by simply 
      changing the class pointer. static procedures do not lend themselves to 
      upgrading software without breaking old software and this is one of the 
      most powerful uses of static classes as libraries that many people in 
      <st1:place w:st="on">Delphi</st1:place> don&#8217;t take advantage of. 
      <o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Point 4. I use 
      constants, so I don&#8217;t have typos in message names (except for demos). And 
      I use SameText, so they are not case-sensitve. I do this purely because I 
      prefer debugging meaningful strings rather than integers. It also makes It 
      easier when dealing with storage of types etc in human readable XML. So 
      that&#8217;s why I do it. Many books use integers. I just don&#8217;t like it. Also. A 
      lot of my infrastructor permits streaming of the entire message, and the 
      data object over TCP as part of the notification. I prefer unknown apps 
      receiving this to get a meaningful &#8216;CLIENT_OBJECT_UPDATED&#8217; rather than 3 
      ;)<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">The StringList is 
      indexed, and its very fast, I&#8217;ve tested with thousands of binds with no 
      real time effect. The work done by listeners is the time issue. Not the 
      lookup.<o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I used to have an 
      observer and observed class system too. And it was really annoying when 
      you had to make changes. I even wrote a plugin for the IDE to convert an 
      object into a listener etc by inserting all the code for me. So that took 
      the hassle out. But I prefer the decoupled method. 
      <o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Thanks for the 
      feedback. <o:p></o:p></SPAN></FONT></P>
      <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
      style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <DIV>
      <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
      face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
      <HR tabIndex=-1 align=center width="100%" SIZE=2>
      </SPAN></FONT></DIV>
      <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
      style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT 
      face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> 
      delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] 
      <B><SPAN style="FONT-WEIGHT: bold">On Behalf Of </SPAN></B>Todd 
      Martin<BR><B><SPAN style="FONT-WEIGHT: bold">Sent:</SPAN></B> Monday, 15 
      May 2006 10:38 a.m.<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> 
      <st1:PersonName w:st="on">NZ Borland Developers Group - <st1:place 
      w:st="on">Delphi</st1:place> List</st1:PersonName><BR><B><SPAN 
      style="FONT-WEIGHT: bold">Subject:</SPAN></B> Re: [DUG] Discussion &amp; 
      Donation</SPAN></FONT><o:p></o:p></P></DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Well you said you wanted 
      feedback, so I hope this isn't too 
      picky.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">1) I find the inconsistent use 
      of variable prefixes a bit annoying. I tend to stick 
      with</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">F- class 
      field</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">A - method 
      parameter</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">P - 
      pointer</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">and no prefixes for class 
      properties or local variables.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">2)&nbsp;TListenerItem.FListener 
      is redundant, since the information it contains is already held in 
      TListenerItem.FBindMethod</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">It could have been implemented 
      as a function, but I don't see why it is 
      needed.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">As usual, redundancy leads 
      to&nbsp;complication elsewhere</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">eg.&nbsp; if 
      (MethodEquals(TMethod(Items[i].FBindMethod) ,TMethod(ABinder))) and 
      (Items[i].FListener = AListener) then</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">the second condition is 
      automatically&nbsp;satisfied by the first 
      condition.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">3) Why define a TNotifier 
      class when all its methods are static? They could be defined as simple 
      procedures/functions in the unit.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">4) I'm not keen on the idea of 
      passing a string parameter to identify the message type, for the simple 
      reason that spelling mistakes can arise and you're never really sure at 
      compile time&nbsp;what "messages" are being broadcast/handled. This 
      problem can&nbsp;of course be ameliorated through the use of constants, 
      but I prefer the use of an enumerated 
      type.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Having said all that. I like 
      the loose coupling of your solution. I have implemented the observer 
      pattern previously with the lists maintained internally by the objects 
      involved, so removing the need to inherit from a particular class is a 
      great improvement. I hadn't considered that option before. Of course you 
      do pay a miniscule performance penalty in having to find the correct list 
      for the object. Perhaps the&nbsp;use of THashedstringlist could mitigate 
      this further.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face=Arial size=2><SPAN 
      style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Todd.</SPAN></FONT><o:p></o:p></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">&nbsp;<o:p></o:p></SPAN></FONT></P></DIV>
      <BLOCKQUOTE 
      style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0cm; MARGIN: 5pt 0cm 5pt 3.75pt; BORDER-LEFT: black 1.5pt solid; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none">
        <DIV>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">----- Original Message ----- 
        <o:p></o:p></SPAN></FONT></P></DIV>
        <DIV style="font-color: black">
        <P class=MsoNormal style="BACKGROUND: #e4e4e4"><B><FONT face=Arial 
        size=2><SPAN 
        style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">From:</SPAN></FONT></B><FONT 
        face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <A 
        title=kyley@harrissoftware.com 
        href="mailto:kyley@harrissoftware.com">Kyley Harris</A> 
        <o:p></o:p></SPAN></FONT></P></DIV>
        <DIV>
        <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
        style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">To:</SPAN></FONT></B><FONT 
        face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> <A 
        title=delphi@ns3.123.co.nz href="mailto:delphi@ns3.123.co.nz">NZ Borland 
        Developers Group - Delphi List</A> <o:p></o:p></SPAN></FONT></P></DIV>
        <DIV>
        <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
        style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Sent:</SPAN></FONT></B><FONT 
        face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> 
        Wednesday, May 10, 2006 3:36 PM<o:p></o:p></SPAN></FONT></P></DIV>
        <DIV>
        <P class=MsoNormal><B><FONT face=Arial size=2><SPAN 
        style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Subject:</SPAN></FONT></B><FONT 
        face=Arial size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"> 
        [DUG] Discussion &amp; Donation<o:p></o:p></SPAN></FONT></P></DIV>
        <DIV>
        <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
        style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></SPAN></FONT></P></DIV>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">In an attempt to create some 
        more interesting discussion, other than talking about the crud IDE 
        issues, I am donating some useful code for discussion, rather than for 
        help. Feel free to keep/use the code if you want to. Be mean if you feel 
        the need (but if your personal then watch out ;) Hopefully this may 
        introduce a discussion where people learn something, or are able to 
        contribute some interesting ideas/information about the topic (which is 
        object notification and observation).<o:p></o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">In the attached zip is a 
        sample application showing a basic, but horrible use of the class in 
        uNotifier.pas. TNotifer is a class I wrote a long while back which 
        loosely follows an observer pattern for allowing one-to-many 
        observations between an object, and a bunch of interested object. 
        <o:p></o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The main difference this 
        class has between many observer patterns is that you do not have to 
        modify existing classes, or sub-class anything, or instantiate anything 
        in your existing objects. The TNotifier handles all the bindings, you 
        just need to implement one listening event on each listening 
        object.<o:p></o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The sample app is a corny 
        app that makes child forms (button click) update a memo based on changes 
        to the memo on the main form. God help me if I ever did anything as 
        potentially unthread safe as that in a real 
        app.<o:p></o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></SPAN></FONT></P>
        <P class=MsoNormal><FONT face=Arial size=2><SPAN 
        style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Fun fun fun&#8230;. (I hope the 
        app compiles. You never know with these tricky little sample 
        apps)<o:p></o:p></SPAN></FONT></P>
        <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
        face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
        <HR align=center width="100%" SIZE=2>
        </SPAN></FONT></DIV>
        <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
        style="FONT-SIZE: 12pt">_______________________________________________<BR><st1:place 
        w:st="on">Delphi</st1:place> mailing 
        list<BR>Delphi@ns3.123.co.nz<BR>http://ns3.123.co.nz/mailman/listinfo/delphi<o:p></o:p></SPAN></FONT></P>
        <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
        face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
        <HR align=center width="100%" SIZE=2>
        </SPAN></FONT></DIV>
        <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
        style="FONT-SIZE: 12pt">Internal Virus Database is 
        out-of-date.<BR>Checked by AVG Free Edition.<BR>Version: 7.1.385 / Virus 
        Database: 268.5.1/327 - Release Date: 
        28/04/2006<o:p></o:p></SPAN></FONT></P></BLOCKQUOTE>
      <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
      face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
      <HR align=center width="100%" SIZE=3>
      </SPAN></FONT></DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">_______________________________________________<BR><st1:place 
      w:st="on">Delphi</st1:place> mailing 
      list<BR>Delphi@ns3.123.co.nz<BR>http://ns3.123.co.nz/mailman/listinfo/delphi<o:p></o:p></SPAN></FONT></P>
      <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
      face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
      <HR align=center width="100%" SIZE=3>
      </SPAN></FONT></DIV>
      <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
      style="FONT-SIZE: 12pt">Internal Virus Database is out-of-date.<BR>Checked 
      by AVG Free Edition.<BR>Version: 7.1.385 / Virus Database: 268.5.1/327 - 
      Release Date: 28/04/2006<o:p></o:p></SPAN></FONT></P></BLOCKQUOTE>
    <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
    face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
    <HR align=center width="100%" SIZE=3>
    </SPAN></FONT></DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">_______________________________________________<BR><st1:place 
    w:st="on">Delphi</st1:place> mailing 
    list<BR>Delphi@ns3.123.co.nz<BR>http://ns3.123.co.nz/mailman/listinfo/delphi<o:p></o:p></SPAN></FONT></P>
    <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
    face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
    <HR align=center width="100%" SIZE=3>
    </SPAN></FONT></DIV>
    <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
    style="FONT-SIZE: 12pt">Internal Virus Database is out-of-date.<BR>Checked 
    by AVG Free Edition.<BR>Version: 7.1.385 / Virus Database: 268.5.1/327 - 
    Release Date: 
28/04/2006<o:p></o:p></SPAN></FONT></P></BLOCKQUOTE></DIV></BLOCKQUOTE></BODY></HTML>