Hi, und herzlich willkommen in der Delphi Praxis
Was dein Problem angeht, so denke ich liegt es einfach in dem schlechten Codestil. Nimm es nicht böse / falsch auf, aber mit dem Code den du hier gepostet hast sind Fehler (auch in anderen Programmen) nicht unwahrscheinlich. Es gibt ein paar schöne Werke zum Thema guter Codestil und natürlich gibt es auch für Delphi eine gewisse Konvention (und auch bei Delphi wird das gerne ignoriert), die besagt dass einem if immer ein begin end folgen sollte. Ist gar nicht so viel arbeit und erspart eine Menge Ärger!
Sorry, werde jetzt nicht deinen gesamten Code durchgehen, aber hier ein einfaches Beispiel wie du es umformen solltest, dann findest du bestimmt schnell deinen Fehler:
Delphi-Quellcode:
var mmh,meh,a:integer;
begin
meh:= Random(100) + 1;
mmh:= Random(100) + 1;
a:= Random (100)+1;
If (checkbox1.Checked) and (a>=90) then
begin
// alles was hier folgt, wird nur geprüft wenn obere Bedingung erfüllt ist.
// ohne das begin wird nur die nächste Bedingung geprüft
If RadioButton1.Checked Then
begin
If (mmh <= 100) and (mmh >25) Then
begin
label17.Caption := ....;
end // If (mmh <= 100) and (mmh >25)
else
begin
label17.Caption := ....;
end; // if not ((mmh <= 100) and (mmh >25))
end; // If RadioButton1.Checked
// Wäre ohne erstes begin immer gecheckt worden, auch wenn Checkbox1.Checked = false
If RadioButton2.Checked Then
begin
If mmh >= 50 Then
begin
label17.Caption := ...;
end // If mmh >= 50
else
begin
end; // if not (mmh >= 50)
end; // If RadioButton2.Checked
....
end; // if (checkbox1.Checked) and (a>=90)
So ist immer ganz klar, wo welcher Block endet. Ansonsten würde ich dir dringend zu besseren Namen für die Variablen raten, auch dass macht es leichter Fehler zu entdecken. Aber wie gesagt, nicht falsch auffassen, sind nur Anregungen und (fast?) alle haben mal ähnlichen Code erzeugt.
Gruß Der Unwissende