Wir behandeln derzeit Delphi im Informatikunterricht. Jetzt
versuche ich, einen kleinen Rechner zusammenzubasteln... haben wir zwar [zumindest noch] nicht als Aufgabe; aber ohne Übung hat man alles bis zur nächsten Stunde vergessen - zudem macht Programmieren einfach Spaß^^. Aber ist ja auch egal...
Als ich es mit if-Abfragen versucht habe, hat es wunderbar geklappt. Jetzt wollte ich den Code etwas umbauen, da mir die ganze if-Verschachtelung dann doch etwas zu groß vorkam. Anstatt der if-Abfrage habe ich die case-Abfrage verwendet.
Ich habe die case-Abfrage auf eine RadioGroup angewendet.
Hier mal die relevanten Teile des Codes, zur besseren Übersich in zwei Teile unterteilt:
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type Trechner = class(TForm) rechenarten: TRadioGroup; plus: TRadioButton; minus: TRadioButton; mal: TRadioButton; geteilt: TRadioButton; hoch: TRadioButton; all: TCheckBox; zahl1: TEdit; zahl2: TEdit; tausch: TButton; meldung: TPanel; color: TPanel; ausgabe: TPanel; Label1: TLabel; ok: TButton; clear: TButton; procedure tauschClick(Sender: TObject); procedure clearClick(Sender: TObject); procedure okClick(Sender: TObject); private public end;
var rechner: Trechner;
implementation
{$R *.DFM} |
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:
| procedure Trechner.okClick(Sender: TObject); var erstezahl : extended; zweitezahl : extended; ergebnis : extended; begin erstezahl := strtofloat(zahl1.text); zweitezahl := strtofloat(zahl2.text); case rechenarten.itemindex of 0: begin ergebnis := erstezahl + zweitezahl; ausgabe.caption := floattostr(ergebnis); end; 1: begin ergebnis := erstezahl - zweitezahl; ausgabe.caption := floattostr(ergebnis); end; 2: begin ergebnis := erstezahl * zweitezahl; ausgabe.caption := floattostr(ergebnis); end; 3: begin ergebnis := erstezahl / zweitezahl; ausgabe.caption := floattostr(ergebnis); end; 4: begin while zweitezahl > 0 do begin ergebnis := erstezahl * erstezahl; end; ausgabe.caption := floattostr(ergebnis); end; end; end;
end. |
Mein Problem ist, dass ich machen kann was ich will... das, was in den cases steht wird einfach nicht ausgeführt. Habe das schon getestet, indem ich in die cases zum Ausschließen eines Fehlers bei der Wertzuweisung so Scherze wie 'showmessage' eingebaut habe.
Ich habe schon einiges versucht, zum Beispiel, '0 ... 4' durch 'plus ... hoch' zu ersetzen; jedoch kommt dann nur die Meldung "Konstantenausdruck erwartet".
Ach ja... ich verwende Delphi5, da wir das auch in der Schule verwenden, falls das wichtig ist.
Für einen Hinweis, wo mein (Denk-)Fehler liegt wäre ich sehr dankbar
MfG
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am So 25.10.2009 um 23:00