![]() |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
Es hat alles prima geklappt, erscheint auch keine Fehlermeldung mehr :-D
So sieht das jetzt aus
Delphi-Quellcode:
procedure TForm1.btn_malClick(Sender: TObject);
begin if edit1.Text = '' then exit; opperator := '*'; if zwischenergebnis = 0 then begin try zwischenergebnis := strtofloat(edit1.text); except zwischenergebnis := 0; end; edit1.Text := ''; end else begin edit1.Text := FloatToStr(zwischenergebnis * strtofloat(edit1.text)); zwischenergebnis := StrToFloat(edit1.text); oppbool := true; end; end; |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
Zitat:
|
AW: Taschenrechner : ' ' ist kein Gleitkommawert
Anscheinend nicht. Aber die erste Abfrage lässt sich ja beliebig erweitern.
Delphi-Quellcode:
:stupid:
if (Edit1.Text = '') or (Edit1.Text = ' ') or (Edit1.Text = 'A') or (Edit1.Text = 'a')
{...} or (Edit1.Text = 'Meine Fresse, was so alles in einem String stehen kann') then exit; |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
ich habs mit einer for schleife gemacht aber es geht irgendiwe trotzdem nicht
Delphi-Quellcode:
function TForm1.IsValidFloat(AValue1: String): Boolean;
var i: Integer; begin Result := false; { Gegeben: String, Gesucht: Boolean} if AValue1 <> '' then begin for i := 0 to Length(AValue1) do begin if AValue1[i] in ['0'..'9', ','] then begin Result := true; end; end; end else begin ShowMessage('String ist leer.'); end; end; |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
Natürlich nicht, denn das Result wird ja auf true gesetzt, sobald auch nur ein einziges Zeichen gültig ist. Du musst es genau anders herum machen.
|
AW: Taschenrechner : ' ' ist kein Gleitkommawert
sonst ist es so richtig? weil wenn ich true und false vertausche klappts immer noch nicht
oder ich bin einfach zu blöd.. blond eben :) |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
Delphi-Quellcode:
function TForm1.IsValidFloat(AValue1: String): Boolean;
var i: Integer; begin Result := true; { Gegeben: String, Gesucht: Boolean} if AValue1 <> '' then begin for i := 1 to Length(AValue1) do // Strings beginnen bei 1 !!! begin if not (AValue1[i] in ['0'..'9', ',']) then begin Result := false; Exit; // das Ergebnis steht fest, also kann man mit Exit oder Break die Bearbeitung auch abbrechen end; end; end else begin ShowMessage('String ist leer.'); Result := false; end; end; Aber wozu der Aufwand? Es gibt fertige Funktionen, um sowas zu prüfen. ![]() ![]() ![]() PS: Das Komma ist nicht immer das Dezimaltrennzeichen. (die Amis nutzen z.B. den Punkt dafür) ![]() Deine Funktion erlaubt auch noch mehrere Kommas oder das Weglassen des Vorkomma- und/oder Nachkommaanteils. Wenn man schon eine manuelle Syntakprüfung machen möchte, dann doch besser richtig prüfen, denn sonst bringt das Ganze ja nichts, da es später dennoch knallen kann. Zitat:
|
AW: Taschenrechner : ' ' ist kein Gleitkommawert
versuch es doch mal so:
Delphi-Quellcode:
Gruß
function TForm1.IsValidFloat(AValue1: String): Boolean;
var i: Integer; begin Result := false; { Gegeben: String, Gesucht: Boolean} if AValue1 <> '' then begin result := true; for i := 1 to Length(AValue1) do if AValue1[i] not in ['0'..'9', ','] then Result := false; end else begin ShowMessage('String ist leer.'); end; end; K-H Edith: Erst zu langsam, dann auch noch vertippt. |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
es kommt immer noch die meldung
Im Projekt Project1.exe ist eine Exception der Klasse EConvertError mit der Meldung ''' ist kein gültiger Gleitkommawert' aufgetreten. |
AW: Taschenrechner : ' ' ist kein Gleitkommawert
da habt ihr mal den ganzen QT
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) txt_rechnung: TEdit; cmd_7: TButton; Label1: TLabel; cmd_clear: TButton; cmd_div: TButton; cmd_gleich: TButton; cmd_0: TButton; cmd_komma: TButton; cmd_1: TButton; cmd_2: TButton; cmd_3: TButton; cmd_mul: TButton; cmd_6: TButton; cmd_5: TButton; cmd_4: TButton; cmd_add: TButton; cmd_9: TButton; cmd_8: TButton; cmd_sub: TButton; procedure cmd_clearClick(Sender: TObject); procedure cmd_2Click(Sender: TObject); procedure cmd_3Click(Sender: TObject); procedure cmd_4Click(Sender: TObject); procedure cmd_5Click(Sender: TObject); procedure cmd_6Click(Sender: TObject); procedure cmd_7Click(Sender: TObject); procedure cmd_8Click(Sender: TObject); procedure cmd_9Click(Sender: TObject); procedure cmd_0Click(Sender: TObject); procedure cmd_divClick(Sender: TObject); procedure cmd_mulClick(Sender: TObject); procedure cmd_subClick(Sender: TObject); procedure cmd_addClick(Sender: TObject); procedure cmd_gleichClick(Sender: TObject); procedure cmd_kommaClick(Sender: TObject); Procedure Rechenarten; procedure cmd_1Click(Sender: TObject); private function IsValidFloat(AValue1: String): Boolean; public { Public-Deklarationen } end; var Form1: TForm1; Rechenart: Integer; Speicher: Real; GZahl: array[0..9] of Integer; const GZahl0 = 0; GZahl1 = 1; GZahl2 = 2; GZahl3 = 3; GZahl4 = 4; GZahl5 = 5; GZahl6 = 6; GZahl7 = 7; GZahl8 = 8; GZahl9 = 9; implementation {$R *.dfm} procedure TForm1.cmd_0Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl0); end; procedure TForm1.cmd_1Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl1); end; procedure TForm1.cmd_2Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl2); end; procedure TForm1.cmd_3Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl3); end; procedure TForm1.cmd_4Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl4); end; procedure TForm1.cmd_5Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl5); end; procedure TForm1.cmd_6Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl6); end; procedure TForm1.cmd_7Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl7); end; procedure TForm1.cmd_8Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr(GZahl8); end; procedure TForm1.cmd_9Click(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + IntToStr (GZahl9); end; procedure TForm1.cmd_addClick(Sender: TObject); begin label1.Caption := '+'; Rechenarten; Rechenart := 1; Speicher := StrToFloat(txt_Rechnung.Text); txt_rechnung.text := ''; end; procedure TForm1.cmd_clearClick(Sender: TObject); begin txt_rechnung.Clear; label1.caption := ''; Speicher := 0; Rechenart := 0; end; procedure TForm1.cmd_divClick(Sender: TObject); begin label1.Caption := '/' ; Rechenarten; Rechenart := 4; Speicher := StrToFloat(txt_Rechnung.Text); txt_rechnung.text := ''; end; procedure TForm1.cmd_mulClick(Sender: TObject); begin label1.Caption := '*' ; Rechenarten; Rechenart := 3; Speicher := StrToFloat(txt_Rechnung.Text); txt_rechnung.text := ''; end; procedure TForm1.cmd_subClick(Sender: TObject); begin label1.Caption := '-' ; Rechenarten; Rechenart := 2; Speicher := StrToFloat(txt_Rechnung.Text); txt_rechnung.Text := ''; end; function TForm1.IsValidFloat(AValue1: String): Boolean; var i: Integer; begin Result := false; { Gegeben: String, Gesucht: Boolean} if AValue1 <> '' then begin for i := 0 to Length(AValue1) do begin if AValue1[i] in ['0'..'9', ','] then begin Result := true; end; end; end else begin ShowMessage('String ist leer.'); end; end; procedure TForm1.Rechenarten; begin IsValidFloat(txt_rechnung.text); case Rechenart of 0: begin Speicher := StrToFloat(txt_rechnung.Text); end; 1: begin Speicher := Speicher + StrToFloat(txt_rechnung.text); end; 2: begin Speicher := Speicher - StrToFloat(txt_rechnung.text); end; 3: begin Speicher := Speicher * StrToFloat(txt_rechnung.text); end; 4: begin Speicher := Speicher / StrToFloat(txt_rechnung.text); end; end; end; procedure TForm1.cmd_gleichClick(Sender: TObject); begin Rechenarten; txt_rechnung.text := FloatToStr(Speicher); Speicher := 0; Rechenart := 0; end; procedure TForm1.cmd_kommaClick(Sender: TObject); begin txt_rechnung.Text := txt_rechnung.Text + ','; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 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