Hi!
Ich sehe hier mehrere Probleme in dem Quellcode. Ich gehe sie mal der Reihe nach durch:
1. Deine Unterproceduren Frage1allg und Frage2allg weisen die Frage dem Label zu und fragen sofort ab, ob die richtige Antwort getroffen wurde. Wo soll denn dort der User reagieren können? Er müsste innerhalb von Millisekunden reagieren und die richtige Entscheidung treffen. Mit anderen Worten: Anzeigen der Frage und Antwortmöglichkeiten muss zeitlich bzw. event-basierend von einander getrennt werden.
2. While verhält sich wie IF und führt standardmässig nur die nachfolgende Anweisung aus, ausser es werden mehrere Anweisungen in einem Begin/End Block zusammen gefasst. Daher würde deine While Schleife nur ständig Randomize aufrufen.
3. Randomize braucht und sollte nur einmalig aufgerufen werden. Rufe diese Funktion z.B. im OnCreate der Form auf und dann reicht das vollkommen.
4. Die
VCL ist event-driven, d.h. du bekommst Bescheid, wenn etwas zu tun ist. Das bedeutet: Wenn der Benutzer den "WEITER" Button drückt, dann erledige die notwendigen Aktionen im OnClick des Buttons (z.B. Überprüfung der Antworten auf Richtigkeit, etc). Wenn in einer Behandlungsroutine bist, wie z.B. das OnClick des BSFLstart, dann ist der Rechner damit beschäftigt und kann keine anderen Aktionen aufnehmen bzw. verarbeiten, da die
VCL darauf wartet, dass du mit der Behandlungsroutine fertig wirst. Mit anderen Worten: innerhalb dieser BSFLstartClick() Methode kannst du so lange Schleifen laufen wie du willst, aber eine CheckBox oder RadioBox wirst du als Nutzer nicht setzen können. Somit kann sich das Edit Feld schlecht innerhalb der While Bedingung ändern. Du musst hier umdenken und die Aktionen machen, wenn ein entsprechendes Ereignis eingetreten ist. Z.B. das Anzeigen des Formulars (OnShow), ein Click auf einen Button, etc.
5. Auch wenn zu 4. nun andere kommen und Lösungen mit Application.ProcessMessages anbieten, so ist dies in diesem Falle überhaupt nicht nötig und kann komplett ohne solche Verbiegungen gelöst werden.
6. Mit dem Projektfile können wir nichts anfangen, wenn das Formular und die
Unit fehlen...