while (!(found) && (low <= high)) { for (i = 0; i < 20; i++) MessageBox::Show(strName[i]->ToString()); strMidName = strName[mid]; // strMidName = strName[1]; strLog += "Checking location " + mid.ToString() + " (" + strMidName + ") against " + strTarget + " (Low: " + low.ToString() + " & High: " + high.ToString() + ")" + Environment::NewLine; if (String::Compare(strTarget,strMidName)==0) found = true; else { if(String::Compare(strTarget,strName[mid])< 0) { high = mid-1; mid = (low + high)/2; } else if(String::Compare(strTarget,strName[mid])> 0) { low = mid+1; mid = (low + high)/2; } } i++; }