Mit der Schleife läufst du den Text von vorne durch. Findet sie etwas, das keine Zahl ist, wird eine Meldung ausgegeben und das letzte Zeichen entfernt.
Wird Text aus der Zwischenablage eingefügt gibt es nicht für jedes Zeichen einen OnChange-Event. In deinem Edit steht dann z.B. "123mlkasdml33".
Deine Prozedur findet das "m" und löscht das letzte Zeichen. Dadurch wird wieder OnChange aufgerufen und es findet wieder das "m". Das geht solange weiter bis auch das gelöscht wurde. (und jedesmal darf der User eine Meldung wegklicken)
Edit: Oops zu spät
Wenn du das "m" gefunden hast steht in i die Position.
Wenn i=1 dann Text leeren andernfalls Textlänge = pred(i)
Delphi-Quellcode:
If not(EdtInterval.Text[i] in [#48..#57]) Then
Begin
MessageDlg('Das Intervall muss ein Ganzzahl sein', mtWarning, [mbok], 0);
If i = 1 then
EdtInterval.Text := ''
Else
EdtInterval.Text := Copy(EdtInterval.Text,0, pred(i));
...
Um 00:42 solltest du aber nicht mehr auf meine Posts vertrauen