if ((EntryValue = '') or (Pos(EntryValue, Combobox.Text) > 0)) then
Das bedeutet, wenn EntryValue leer ist ODER einen Teilstring enthält, wird EntryValue in die ComboBox eingefügt. Wieso sollte ein Leerstring in die ComboBox eingefügt werden? Das passiert somit auch bei jedem Versuch, aus der ini zu lesen, der fehlschlägt, da der Standardwert ein Leerstring ist.
Es ist
imho auch Quatsch, in Pos() den Inhalt der ComboBox zu vergleichen. Denn diese leerst du und füllst sie anschließend. Du musst natürlich mit deinem Suchbegriff (Edit.Text) vergleichen.
Lasse dir mal EntryValue ausgeben.
Zugegeben, ich habe "!=" im Code geschrieben. In Delphi heißt es "<>", also:
if ((EntryValue <> '') and (Pos(EntryValue, MyEdit.Text) > 0)) then
Oder hier:
showmessage(inttostr(entrynum)+entryvalue); // gibt immer "3Bert" aus
Natürlich gibt das immer "3Bert" aus, da du die Ausgabe nach Ablauf der Schleife machst. Damit wird immer der letzte Wert ausgegeben. Wenn du das innerhalb der Schleife aufrufst, sieht das schon anders aus.