Hallo,
hmm, mit Konsolenanwendungen hab ich in Delphi nie was gemacht, würd mir das ganze aber so erklären:
mit read liest du immer ein zeichen vom Input.
bei 'gebe j oder n ' ein, gibst du 'j' ein,
anschließend in der zweiten repaet schleife (wo dein fehler auftritt) gibst du dann ein a ein,
damit steht im puffer ja.
mit readln liest du nun jedes Zeichen einzeln aus:
1. j -> das ist nicht a oder s, also "Du darfst nur s oder a eingeben"
2. a -> weiter gehts.
wenn du dich schon beim j vertippst, werden dann auch mehrere Fehlermeldungen "Du darfst nur s oder a eingeben" erscheinen
probier mal folgendes:
laß das read(jon)
ändere soa in String
und schreib mal für testzwecke:
readln(soa);
writeln(soa)
dann siehste was ich meine (hoffentlich, habs nich probiert

)
genau wie beim auslesen mit readln aus dateien, setzt readln den "cursor auf die nächste Zeile" oder so ähnlich
Mfg Frank