![]() |
AW: Taschenrechner mit ListBox!
Zitat:
|
AW: Taschenrechner mit ListBox!
Sooo schlimm isses ja nu auch wieder nich. Einfach beim nächsten Mal dran denken, und alles ist feini feini :lol:
|
AW: Taschenrechner mit ListBox!
Sorry, dass ich noch mal fragen muss, aber es ist wichtig!
Ich möchte jetzt nämlich, dass eine Fehlermeldung angezeigt wird, wenn in einem der edits nichts reingeschrieben wurde und man auf Ergebnis drückt. Ich habs schon mit dem versucht:
Delphi-Quellcode:
Aber hat nicht geklappt. Das Programm ist nur wieder abgestürzt.
if (zaehler.Text = '') or (zaehler2.Text = '') then begin ShowMessage('Du hast was vergessen!') end;
Hier ist mein Quellcode nochmal:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg; type TForm1 = class(TForm) Label1: TLabel; zaehler: TEdit; reset: TButton; zaehler2: TEdit; Label2: TLabel; Label3: TLabel; Image1: TImage; ListBox: TListBox; berechnen: TButton; schliessen: TButton; ergebnis: TLabel; Timer: TTimer; fehler1: TLabel; Image2: TImage; DatumUhr1: TLabel; procedure berechnenClick(Sender: TObject); procedure schliessenClick(Sender: TObject); procedure resetClick(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Image2Click(Sender: TObject); procedure zaehlerKeyPress(Sender: TObject; var Key: Char); procedure zaehler2KeyPress(Sender: TObject; var Key: Char); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; a,b: real; implementation {$R *.DFM} procedure TForm1.berechnenClick(Sender: TObject); var a, b: real; begin a:= StrtoFloat(zaehler.Text); b:= StrtoFloat(zaehler2.Text); if ListBox.selected[0] then ergebnis.Caption:= FloattoStrF(a + b,ffFixed,10,4); if ListBox.selected[1] then ergebnis.Caption:= FloattoStrF(a - b,ffFixed,10,4); if ListBox.selected[2] then ergebnis.Caption:= FloattoStrF(a * b,ffFixed,10,4); if (ListBox.selected[3]) and (b=0) then begin Showmessage('Durch 0 darf nicht geteilt werden!')end; if (ListBox.selected[3]) and (b <> 0)then ergebnis.Caption:= FloattoStrF(a / b,ffFixed,10,4); if (a>=9999999999999999) or (b>=9999999999999999) then begin ShowMessage('Die Zahl ist zu groß') end; end; procedure TForm1.schliessenClick(Sender: TObject); begin Close(); end; procedure TForm1.resetClick(Sender: TObject); begin zaehler.Clear; zaehler2.Clear; ergebnis.Caption:='Ergebnis' end; procedure TForm1.TimerTimer(Sender: TObject); begin DatumUhr1.Caption:=DateTimeToStr(Now)+ ' Uhr'; end; procedure TForm1.Image1Click(Sender: TObject); begin Showmessage('Artwork © by Yana Toboso'); end; procedure TForm1.Image2Click(Sender: TObject); begin Showmessage('Artwork © by Yana Toboso and edited by us') end; procedure TForm1.zaehlerKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9',#08,',']) then begin key:= #0; Beep; end; end; procedure TForm1.zaehler2KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9',#08,',']) then begin key:= #0; Beep; end; end; end. |
AW: Taschenrechner mit ListBox!
Und wo steht da jetzt der angesprochene Code?
|
AW: Taschenrechner mit ListBox!
Zitat:
(Hab jetzt nur den Teil genommen, der verändert wurde.)
Delphi-Quellcode:
procedure TForm1.berechnenClick(Sender: TObject);
var a, b: real; begin a:= StrtoFloat(zaehler.Text); b:= StrtoFloat(zaehler2.Text); FocusControl(reset); if ListBox.selected[0] then ergebnis.Caption:= FloattoStrF(a + b,ffFixed,10,4); if ListBox.selected[1] then ergebnis.Caption:= FloattoStrF(a - b,ffFixed,10,4); if ListBox.selected[2] then ergebnis.Caption:= FloattoStrF(a * b,ffFixed,10,4); if (ListBox.selected[3]) and (b=0) then begin Showmessage('Durch 0 darf nicht geteilt werden!')end; if (ListBox.selected[3]) and (b <> 0)then ergebnis.Caption:= FloattoStrF(a / b,ffFixed,10,4); if (a>=9999999999999999) or (b>=9999999999999999) then begin ShowMessage('Die Zahl ist zu groß') end; //Hier der Code, der nicht geht : if (zaehler.Text = '') or (zaehler2.Text = '') then begin ShowMessage('Da fehlt etwas!')end; end; |
AW: Taschenrechner mit ListBox!
Meinst Du nicht, dass es sinniger wäre, zuerst auf gültige Eingaben zu prüfen, bevor man versucht, diese umzuwandeln und damit zu arbeiten?
|
AW: Taschenrechner mit ListBox!
Zitat:
|
AW: Taschenrechner mit ListBox!
Wie, Du weißt nicht, wie das geht? Du tust das doch bereits, nur eben viel zu spät. Mal anders gefragt: was ist an dieser Logik falsch?
Delphi-Quellcode:
Macht das so nicht mehr Sinn?
Wasser.GießInEimer;
if Eimer.ÖffnungUnten then ShowMessage('Du musst den Eimer umdrehen');
Delphi-Quellcode:
if Eimer.ÖffnungUnten then
ShowMessage('Du musst den Eimer umdrehen') else Wasser.GießInEimer; |
AW: Taschenrechner mit ListBox!
Zitat:
|
AW: Taschenrechner mit ListBox!
Ist das Dein Ernst? Mit Eurem Info-Lehrer würde ich gern mal ein paar Takte reden.
Delphi-Quellcode:
Wobei damit auch noch nicht sichergestellt ist, dass es klappt (was ist denn, wenn jemand Buchstaben eingibt?), aber zumindest Leerstrings sollten keine Fehler mehr verursachen.
if (zaehler.Text = '') or (zaehler2.Text = '') then
begin ShowMessage('Da fehlt etwas!'); end else begin a:= StrtoFloat(zaehler.Text); b:= StrtoFloat(zaehler2.Text); //usw. end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz