Autor Beitrag
MCEber
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 08.03.10 18:10 
Hallo,
ich bin neu hier (und völliger Anfänger) und mir wurde das Forum hier empfohlen.
Vielleicht könnt ihr mir helfen?

Ich soll einen Rechentrainer für Addition erstellen und ich auch einen kleinen Ansatz:
(Ich hoffe es ist nicht falch den Quellcode einfach zu posten)
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:
71:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label6: TLabel;
    Edit3: TEdit;
    Label7: TLabel;
    Button1: TButton;
    Button2: TButton;
    Edit4: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var x,y,z:double;
begin
if x+y=z then edi4.Text:='Richtig'
if x+y (nicht) z edit4.Text='Falch'



end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.Button3Click(Sender: TObject);
Var x,y,z:double;
begin
edit3.Clear;
edit4.Clear;
randomize;
x := random (100+1);
y := random (100+1);
x := StrtoFloat(edit1.Text);
y := StrtoFloat(edit2.Text);

end;

end.

Hier ist noch das Bild vom Interface Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Ich bedanke mich im Voraus :)

Gruß MCEber

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 08.03.10 18:16 
Hallo und :welcome: im Delphi-Forum!

Wobei sollen wir dir denn genau helfen? Wo stecken deine Probleme?

bitte markiere deine Quelltext mit den [Delphi]Dein Quelltext[/delphi]-Tags.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
MCEber Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 08.03.10 18:32 
Vielen Dank!
Mein Problem ist das ich einen Error im Momment bekomme wenn ich auf "Neu" drücke das im Edit1.Text Feld nichts (also " ") steht.
Die Beenden Funktion funktioniert, aber bei der Vergleichen Fuktion nicht fuktioniert und ich nicht weis nicht wie ich das anstellen soll.

Gruß MCEber

PS: Danke für den Tipp mit dem Tags.
Werde ich nächstes mal verwenden!
martin300
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Mo 08.03.10 18:38 
Hallo,

Button Neu:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button3Click(Sender: TObject);
Var x,y,z:double; // <-- das ist komisch (2)
begin
edit3.Clear;
edit4.Clear;
randomize;
x := random (100+1);
y := random (100+1);
x := StrtoFloat(edit1.Text); // <--- das ist komisch (1)
y := StrtoFloat(edit2.Text);
end;


Bei (1) was willst du da machen?
Bei (2) wo sind die Variablen gültig? Werden sie noch an einer anderen Stelle benötigt? Was passiert mit denen jetzt?

Moderiert von user profile iconNarses: Hinweise im QT als Kommentar markiert.
MCEber Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 08.03.10 18:46 
Hallo, :)

user profile iconmartin300 hat folgendes geschrieben Zum zitierten Posting springen:
Bei (1) was willst du da machen?
Hier dachte ich das dieser Befehl die Variable X in Edit1.Text ausgegeben wird (Also die Zufallszahl).

user profile iconmartin300 hat folgendes geschrieben Zum zitierten Posting springen:
Bei (2) wo sind die Variablen gültig? Werden sie noch an einer anderen Stelle benötigt? Was passiert mit denen jetzt?
Ich glaube ich hätte die Variablen in den Hauptteil schreiben müssen weil ich die Variablen noch an anderen Stellen brauche.

Gruß MCEber

Moderiert von user profile iconNarses: Zitate kenntlich gemacht.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 08.03.10 19:31 
(2): richtig. Wenn du lokal eine Variable definierst, dann gilt si nur und genau in der Prozedur / Funktion. Aber dann hat sie auch vor allem anderen Vorrang. Wesentlich besser als die globale Definition ist jedoch diese hier:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type
  TForm1 = class(TForm)
    private
      ...
    public
      ...
      x, y, z: Double;
  end;


(1) Bei einer Zuweisung mit := wird in Delphi (und auch in allen anderen Programmiersprachen, die ich kenne) der linken Seite die rechte zugewiesen, nicht anders herum! Beide Versionen sind nämlich nicht gleich:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var
  a, b, c: Integer;
begin
  { Version 1 }
  a := 1;
  b := 5;

  { Zuweisung }
  a := b; // jetzt ist a = b = 5;
  
  (********************************)

  { oder aber: }
  a := 1;
  b := 5;
  { Zuweisung }
  b := a; // jetzt ist b = a = 1;
end;


Zuletzt bearbeitet von Jakob_Ullmann am Mo 08.03.10 19:38, insgesamt 1-mal bearbeitet
martin300
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Mo 08.03.10 19:35 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
Var x,y,z:double; <-- (3)
begin
if x+y=z then edi4.Text:='Richtig' <--(4)
if x+y (nicht) z edit4.Text='Falch'
end;


(3): müsstest du eigentlich schon gelöst haben.
(4): wäre mit einer if then else Schleife möglich. siehe:

www.delphi-treff.de/...ascal/verzweigungen/
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 08.03.10 19:37 
user profile iconmartin300 hat folgendes geschrieben Zum zitierten Posting springen:

(4): wäre mit einer if then else Schleife möglich.


siehe: www.if-schleife.de/

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 08.03.10 19:41 
user profile iconmartin300 hat folgendes geschrieben Zum zitierten Posting springen:

(4): wäre mit einer if then else Schleife möglich.


Du bist jetzt schon über ein Jahr dabei? Autsch... Die Struktur if-then-else weist nicht die Merkmale einer Schleife auf, nämlich, dass ein bestimmter Code mehrfach ausgeführt wird! Die Tatsache, dass du mit Labels, Gotos und IF-THEN eine schleifenartige Konstruktion machen kannst, ändert daran nichts.
martin300
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Mo 08.03.10 19:49 
Also war das doch nicht meine Eigenkreation und es gibt eine Lobby die sich dafür, öh dagegen stark macht. :(
MCEber Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 11.03.10 01:15 
Danke für eure Tipps,
ich werde dann morgen posten was ich eigentlich hätte erstellen wollen (was die HA war) :)

Gruß MCEber
MCEber Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 11.03.10 15:23 
Also,
hier der Quelltext des Rechentrainers:
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:
71:
72:
73:
74:
75:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label6: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  
implementation

{$R *.dfm}
Var a,b,c,d,e:integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
d:=d+1;
label9.Caption:=(inttostr(d));

Button2.Enabled:=true;
edit1.clear;
label2.Caption:=' ';
label4.Caption:=' ';
a:=random(99)+1;
b:=random(99)+1;
label2.caption:=(IntToStr(a));
label4.caption:=(IntToStr(b));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Application.terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Enabled:=false;
     if edit1.text=(inttostr(a+b))
     then label8.Caption:='Die Antwort '+(inttostr(a+b))+' ist richtig!'
        else label8.Caption:='Falsch! Die richtige Antwort ist '+(inttostr(a+b));
end;

end.


Falls jemand interesse an der exe hat kann er mir eine Anfrage senden :)
Gruß MCEber

Edit: aus Dephli Delphi gemacht