Bexx
Verrückte Erfinderin bei Daniel Düsentrieb
Guten Morgen liebe Foris,
ich beschäftige mich mit Delphi für die Arbeit und wollte mir, um ein Gefühl für die Syntax zu entwickeln, einen relativ stupiden Taschenrechner erstellen. Der gesamte Rechenweg soll im Fenster mit arithm. Operand im Editfenster angezeigt werden.
Nun habe ich aber das Problem, das sowohl Leerstellen als auch der nicht numerische Operand in einem meiner beiden Strings stehen und ich möchte nun gerne den String dahingehend manipulieren, dass am Ende nur noch die Zahlen darin stehen bleiben.
ich habe folgenden Versuch gestartet und bin mit der Operation gescheitert (patient tot ) :
Das war der Test für die Bereinung, vorläufig nur für das Plus bei der Addition und die Leerzeichen zu entfernen.
Beides ist nicht passiert. Nach diesem Vorgang steht in sTextContent_2 der gesamte Rechenweg [12 + 12 ]
Das verstehe ich nicht so ganz.. Kann jemand mal mit drüber schauen und mich bitte belehren?
Danke im Voraus und unten nochmal gesamter Quellcode.
Becci
ich beschäftige mich mit Delphi für die Arbeit und wollte mir, um ein Gefühl für die Syntax zu entwickeln, einen relativ stupiden Taschenrechner erstellen. Der gesamte Rechenweg soll im Fenster mit arithm. Operand im Editfenster angezeigt werden.
Nun habe ich aber das Problem, das sowohl Leerstellen als auch der nicht numerische Operand in einem meiner beiden Strings stehen und ich möchte nun gerne den String dahingehend manipulieren, dass am Ende nur noch die Zahlen darin stehen bleiben.
ich habe folgenden Versuch gestartet und bin mit der Operation gescheitert (patient tot ) :
Code:
procedure TfMain.Btn_resClick(Sender: TObject);
begin
if not bSecondIsActive then
begin
Edt_ergebnisfeld.Text := 'Error. Wrong Term';
end
else
begin
StringReplace(StringReplace(sTextContent_1, #32, ' ', [rfReplaceAll]), #43, ' ', [rfReplaceAll]);
StringReplace(StringReplace(sTextContent_2, #32, ' ', [rfReplaceAll]), #43, ' ', [rfReplaceAll]);
calculus(StrToInt(sTextContent_1), StrToInt(sTextContent_2), cArithOperator);
end;
end;
Das war der Test für die Bereinung, vorläufig nur für das Plus bei der Addition und die Leerzeichen zu entfernen.
Beides ist nicht passiert. Nach diesem Vorgang steht in sTextContent_2 der gesamte Rechenweg [12 + 12 ]
Das verstehe ich nicht so ganz.. Kann jemand mal mit drüber schauen und mich bitte belehren?
Danke im Voraus und unten nochmal gesamter Quellcode.
Becci
Code:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls;
type
TfMain = class(TForm)
Edt_ergebnisfeld: TEdit;
Btn_Abbr: TBitBtn;
Btn_1: TButton;
Btn_7: TButton;
Btn_4: TButton;
Btn_5: TButton;
Btn_9: TButton;
Btn_6: TButton;
Btn_3: TButton;
Btn_2: TButton;
Btn_8: TButton;
Btn_plus: TButton;
Btn_minus: TButton;
Btn_mal: TButton;
Btn_geteilt: TButton;
Btn_res: TButton;
Btn_0: TButton;
procedure Btn_1Click(Sender: TObject);
procedure Btn_2Click(Sender: TObject);
procedure Btn_3Click(Sender: TObject);
procedure Btn_4Click(Sender: TObject);
procedure Btn_5Click(Sender: TObject);
procedure Btn_6Click(Sender: TObject);
procedure Btn_7Click(Sender: TObject);
procedure Btn_8Click(Sender: TObject);
procedure Btn_9Click(Sender: TObject);
procedure Btn_0Click(Sender: TObject);
procedure Btn_AbbrClick(Sender: TObject);
procedure Btn_plusClick(Sender: TObject);
procedure Btn_minusClick(Sender: TObject);
procedure Btn_malClick(Sender: TObject);
procedure Btn_geteiltClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Btn_resClick(Sender: TObject);
private
{ Private-Deklarationen }
cArithOperator : char;
dResult : Double;
sTextContent_1 : string;
sTextContent_2 : string;
bSecondIsActive : Boolean;
procedure calculus(iInt1, iInt2 : integer; cChar : char);
public
{ Public-Deklarationen }
end;
var
fMain: TfMain;
implementation
{$R *.dfm}
procedure TfMain.Btn_0Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '0';
Edt_ergebnisfeld.Text := sTextContent_1 ;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '0';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_1Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '1';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '1';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_2Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '2';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '2';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_3Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '3';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '3';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_4Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '4';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '4';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_5Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '5';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '5';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_6Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '6';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '6';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_7Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '7';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '7';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_8Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '8';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '8';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_9Click(Sender: TObject);
begin
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + '9';
Edt_ergebnisfeld.Text := sTextContent_1;
end
else
begin
sTextContent_2 := Edt_ergebnisfeld.Text + '9';
Edt_ergebnisfeld.Text := sTextContent_2;
end;
end;
procedure TfMain.Btn_AbbrClick(Sender: TObject);
begin
sTextContent_1 := '';
sTextContent_2 := '';
Edt_ergebnisfeld.Text := '';
end;
procedure TfMain.Btn_geteiltClick(Sender: TObject);
begin
cArithOperator := '%';
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + ' % ';
Edt_ergebnisfeld.Text := sTextContent_1;
end;
bSecondIsActive := true;
end;
procedure TfMain.Btn_malClick(Sender: TObject);
begin
cArithOperator := '*';
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + ' * ';
Edt_ergebnisfeld.Text := sTextContent_1;
end;
bSecondIsActive := true;
end;
procedure TfMain.Btn_minusClick(Sender: TObject);
begin
cArithOperator := '-';
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + ' - ';
Edt_ergebnisfeld.Text := sTextContent_1;
end;
bSecondIsActive := true;
end;
procedure TfMain.Btn_plusClick(Sender: TObject);
begin
cArithOperator := '+';
if not bSecondIsActive then
begin
sTextContent_1 := Edt_ergebnisfeld.Text + ' + ';
Edt_ergebnisfeld.Text := sTextContent_1;
end;
bSecondIsActive := true;
end;
procedure TfMain.Btn_resClick(Sender: TObject);
begin
if not bSecondIsActive then
begin
Edt_ergebnisfeld.Text := 'Error. Wrong Term';
end
else
begin
StringReplace(StringReplace(sTextContent_1, #32, ' ', [rfReplaceAll]), #43, ' ', [rfReplaceAll]);
StringReplace(StringReplace(sTextContent_2, #32, ' ', [rfReplaceAll]), #43, ' ', [rfReplaceAll]);
calculus(StrToInt(sTextContent_1), StrToInt(sTextContent_2), cArithOperator);
end;
end;
procedure TfMain.calculus(iInt1: Integer; iInt2: Integer; cChar: Char);
begin
if cChar = '+' then
begin
dResult := iInt1 + iInt2;
end;
if cChar = '-' then
begin
dResult := iInt1 - iInt2;
end;
if cChar = '*' then
begin
dResult := iInt1 * iInt2;
end;
if cChar = '%' then
begin
if iInt1 = 0 then
Edt_ergebnisfeld.Text := 'Error. Nulldivision!'
else
dResult := iInt1 / iInt2;
end;
Edt_ergebnisfeld.Text := FloatToStr(dResult);
end;
procedure TfMain.FormCreate(Sender: TObject);
begin
bSecondIsActive := false;
end;
end.