Autor Beitrag
claudi89
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Sa 21.01.06 18:46 
Hallo kann mir mal bitte jemand helfen?
delphi gibt mit dem untenstehenden quelltext zwar immer eine andere aufgabe mit einem anderen rechenzeichen aus, aber beim prüfen gibt er im label_ausgabeRichtigesErgebnis immer das divisionsergebnis aus, egal was er oben für eine aufgabe ausgegeben hat.
wär super wenn ihr mir helfen könntet.



ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
  
procedure TForm8.Button_AufgabeStellenClick(Sender: TObject);
begin
randomize;
REPEAT
Zahl1:= random (100)+1;
Zahl2:= random (100)+1;
n:= random (4);
if n=0 then begin
rechenzeichen:='+';
result:= Zahl1+Zahl2;    end;
if n=1 then  begin
rechenzeichen:='-';
result:= Zahl1-Zahl2;   end;
if n=2 then begin
rechenzeichen:='*';
result:= Zahl1*Zahl2;     end;
if n=3 then  begin
rechenzeichen:='/';
result:= Zahl1/Zahl2;     end;

Until  ((Zahl1 MOD Zahl2 =0) AND (Zahl1 >Zahl2));
Label _AufgabeAusgeben.Caption:=IntToStr(Zahl1)+' '+rechenzeichen+ ' '+IntToStr (Zahl2) ;
end;



procedure TForm8.Button_ErgebnisPruefenClick(Sender: TObject);
begin
ergebnis:=StrToInt(Edit_ErgebnisEingeben.text);
     if (ergebnis=result) then
        Label_AusgabeRichtigFalsch.caption:='richtig'
        else Label_AusgabeRichtigFalsch.caption:= 'falsch';
               begin
               if  Label_AusgabeRichtigFalsch.caption = 'falsch' then;
                  begin if
                  n=0 then
                  Label_AusgabeRichtigesErgebnis.caption:=IntToStr(Zahl1+Zahl2) ;
                  end;
                  begin if
                  n=1 then;
                  Label_AusgabeRichtigesErgebnis.caption:=IntToStr(Zahl1-Zahl2) ;
                  end;
                  begin if
                  n=2 then;
                  Label_AusgabeRichtigesErgebnis.caption:=IntToStr(Zahl1*Zahl2) ;
                  end;
                  begin if
                  n=3 then;
                  Label_AusgabeRichtigesErgebnis.caption:=FloatToStr(Zahl1/Zahl2) ;
                  if Label_AusgabeRichtigFalsch.caption =  'richtig' then
                  Label_AusgabeRichtigesErgebnis. caption:='-';
                  end;
              end;
end;
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Sa 21.01.06 18:59 
deine variable result ist nicht deklariert bzw höchstens in einer function vorhanden dort dann aber nach diesem Code undefiniert. Oder sind die alle global definiert??

Der Grund warum immer nur das Divisionsergebnis ausgegeben wird ist dass du die anderen Ausgaben immer wieder überschreibst indem du das Label neu definierst

lebel.caption:=bla =>überschreiben

label.caption:=label.caption+bla =>hinzufügen
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 21.01.06 19:11 
Ich würde sagen das ist Alles Quark schau Dir mal deinen Ersten Quelltext and if ..then Delphi beschwert sich zwar nicht ignoriert aber viel - das letztere wird ausgeführt.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 21.01.06 19:49 
Sieht man mal wieder was falsches Formatieren ausmacht... :roll:
So sollte es aussehen (wenn optimiert, formatiert und korrigiert):

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
// Global
var
  Zahl1, Zahl2: Integer;
  Erg:          Integer;
  RZeichen:     String;

procedure TForm8.Button_AufgabeStellenClick(Sender: TObject);
var
  X: Integer;
begin
  Randomize;

  Zahl1 := Random(100) + 1;
  Zahl2 := Random(100) + 1;

  while (Zahl1 < Zahl2) do
  begin
    Zahl1 := Random(100) + 1;
    Zahl2 := Random(100) + 1;
  end;

  X := Random(4);

  case X of
    0: 
    begin
       Erg      := Zahl1 + Zahl2;
       RZeichen := '+';
    end;

    1: 
    begin
       Erg      := Zahl1 - Zahl2;
       RZeichen := '-';
    end;

    2:
    begin
       Erg      := Zahl1 * Zahl2;
       RZeichen := '*';
    end;

    3: 
    begin
       Erg      := Zahl1 div Zahl2;
       Zahl1    := Erg * Zahl2;
       RZeichen := '/';
    end;
  end;

  Label_AufgabeAusgeben.Caption := IntToStr(Zahl1) + ' ' + RZeichen + ' ' + IntToStr(Zahl2);
end;

procedure TForm8.Button_ErgebnisPruefenClick(Sender: TObject);
var
  X: Integer;  
begin
  X := StrToInt(Edit_ErgebnisEingeben.Text);

  if X = Erg then
  begin
    Label_AusgabeRichtigFalsch.Caption     := 'Richtig';
    Label_AusgabeRichtigesErgebnis.Caption := '-';
  end
  else
  begin
    Label_AusgabeRichtigFalsch.Caption     := 'Falsch';
    Label_AusgabeRichtigesErgebnis.Caption := IntToStr(Erg);
  end;
end;

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)