Hallo TheCatcher.
Ich fürchte die von dir angewendete Methode ist doch etwas aufwendig. (Das ist das was dir dein Rechner versucht mitzuteilen, wenn er kurz einfriert.
) Du kanst mehrere Möglichkeiten deinen Algorithmus performanter zu gestalten:
- versuche immer alles "nur einmal" zu machen: es bspw. ist unnötig StrToInt(onr.text) mehrfach durchzuführen
- beende zu suchen, wenn du dein Ergebnis hast: in for I:= ... do ermittelst du nur einen Ergebnissatz (if ID = ...) vergleichst aber weiter mit den restlichen Daten
- optimiere deine Liste mit einem Index: du könntest bspw deine Liste sortieren um gezielt darin suchen zu können oder erstellst dir eine separate, sortierte Liste (einen Index) für deine Daten, den du darfür verwenden kannst.
Diese Schritte sollten dir helfen dein Ergebnis in weniger als 0,3s für deine 300 Datensätze zu finden.
Gruß,
Panthrax.