Autor Beitrag
Method_Man
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.10.04 19:57 
Hi Leute!

Ich habe da mal ein sehr kleines Programm geschrieben und komme bei einer Formulierung nicht weiter.

Ein kleiner Auszug aus meinem Programm:

ausblenden Delphi-Quelltext
1:
2:
If Edit2.Text=FloatToStr(x/y)
then form1.label5.visible:=true;´


Es werden zufällig Aufgaben gestellt, die ich dann beantworten muss, wenn ich sie richtig beantworte erscheint Label5 'richtig' und zeigt es mir.
Also wenn die Aufgabe z.B. 10 / 5 ist, muss ich 2 eintippen damit das Label mit der Schrift Richtig erscheint.

Wie muss ich dann formulieren wenn ich was falsches schreibe also nicht die Lösung von x/y, dass dann ein anderes Label erscheint mit falsch.

Schönen Abend noch.

Method_Man

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.


Zuletzt bearbeitet von Method_Man am Do 14.10.04 21:32, insgesamt 1-mal bearbeitet
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.10.04 20:10 
Besser ist es, Zahlen statt Strings zu vergleichen. Du machst genau das Gegenteil. So ist es besser:
ausblenden Delphi-Quelltext
1:
If strtofloat(Edit2.Text) = (x/y) then...					

Das Gegenstück dazu wäre dann eben:
ausblenden Delphi-Quelltext
1:
If strtofloat(Edit2.Text) <> (x/y) then...					


Generell wäre es außerdem besser, wenn du von vorherein mit Intergers statt mit Reals arbeitest und somit das Teilen mit div bewerkstelligst.
gitta
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Do 14.10.04 20:20 
Hallo wenn ich Dich richtig verstanden habe meinst Du folgendes
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
If Edit2.Text=FloatToStr(x/y)then
begin
  form1.label5.visible:=true; {für richtig}
  form1.label6.visible:=false; {für falsch}
end else
begin
  form1.label5.visible:=false; {für richtig}
  form1.label6.visible:=true; {für falsch}
end;


oder Du schreibst:
ausblenden Delphi-Quelltext
1:
2:
form1.label5.visible := ( Edit2.Text = FloatToStr(x/y) );
form1.label6.visible := ( Edit2.Text <> FloatToStr(x/y) );


Gruß Gitta

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 14.10.04 20:45 
Könntest du bitte deinen Code in Delphi-Tags einfassen? Dann wird das Syntax-Highlighting aktiviert und der Code ist besser lesbar.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 14.10.04 20:50 
Hallo!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:

Richtlinien hat folgendes geschrieben:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei Deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Grüße
Christian :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Method_Man
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.10.04 21:42 
Danke für die schnelle Hilfe!

Mit dem Delphi-Tags wusste ich nicht, mache ich nächstes mal immer, sorry. :oops:

Jetzt läuft das Programm aber, es erscheint eine Fehlermeldung, manchmal.

Benachrichtung über Debugger-Exception

Im Projekt Project.exe ist eine Exception der Klasse EConvertError aufgetreten.
Meldung:"ist kein gültiger Gleitkommawert'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.


Ich habe echt keine Ahnung warum der Fehler macht.
Hier das ganze Programm nochmal.

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:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button5: TButton;
    Edit3: TEdit;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  x,y:Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;            
x:=Random(50);
y:=Random(50);
Edit1.Text:= IntToStr(x)+'+'+IntToStr(y);
Edit2.Text:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Randomize;
x:=Random(50);
y:=Random(50);
Edit1.Text:= IntToStr(x)+'-'+IntToStr(y);
Edit2.Text:='';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Randomize;
x:=Random(10);
y:=Random(10);
Edit1.Text:= IntToStr(x)+'*'+IntToStr(y);
Edit2.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Randomize;
x:=Random(10);
y:=Random(10);
Edit1.Text:= IntToStr(x)+'/'+IntToStr(y);
Edit2.Text:='';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
If Edit2.Text=IntToStr(x+y)
then form1.label5.visible:=true;
If strtofloat(Edit2.Text) <> (x+y)
then form1.Label4.Visible:=true;

If Edit2.Text=IntToStr(x-y)
then form1.label5.visible:=true;
If strtofloat(Edit2.Text) <> (x-y)
then form1.Label4.Visible:=true;

If Edit2.Text=IntToStr(x*y)
then form1.label5.visible:=true;
If strtofloat(Edit2.Text) <> (x*y)
then form1.Label4.Visible:=true;

If Edit2.Text=FloatToStr(x/y)
then form1.label5.visible:=true;
If strtofloat(Edit2.Text) <> (x/y)
then form1.Label4.visible:=true;

end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Edit3.Text:=IntToStr(x+y);
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Edit3.Text:=IntToStr(x-y);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Edit3.Text:=IntToStr(x*y);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Edit3.Text:=FloatToStr(x/y);
end;

end.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Do 14.10.04 21:57 
Hallo,

wahrscheinlich steht in irgendeinem Deiner Edits nichts drin oder Du hast statt einem Punkt ein Komma genommen. Du musst also, bevor Du mit StrToFloat ein Wert umwandeln willst, zuerst prüfen, ob Edit.Text eine gültige Zeichenfolge enthält.

Eine ander Möglichkeit besteht darin, FloatToStr in einen Try-Except-Block zu kapseln. Dadurch kannst Du den EConvertError abfangen und entsprechend darauf reagieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  ...
  try
    if strtofloat(Edit2.Text) <> (x+y)  then form1.Label4.Visible:=true; 
  except
    on E: EConvertError do
    begin
      ShowMessage('Edit 2 enthält einen falschen Wert, bitte korrigieren');
      Edit2.SetFocus;
      Edit2.SelectAll;
    end// on
  end// try
  ...

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Method_Man
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.10.04 23:42 
Hi Leute!

Ich wollte mal ein Dialog in meinem Programm reinbringen, wie könnte ich das machen?

Z.B. soll er mir eine Frage stellen, die dann mit meiner Antwort zusammen in einem Satz ausgestrahlt werden soll.

Frage: Wie heissen Sie?
Antwort: Mr.X

'Guten Tag Herr Mr.X'

Wäre sehr dankbar für Antworten

Gruss Method_Man
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 16.10.04 00:41 
Bitte immer nur eine Frage pro Thread.

Aber bei der hier gehts kurz zu halten:
Guck dir mal die Befehle InputBox und MessageDlg an.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.