Entwickler-Ecke
Sonstiges (Delphi) - Komma im Taschenrechner angezeigt lassen?
tHeRiAn - Do 16.10.03 17:35
Titel: Komma im Taschenrechner angezeigt lassen?
Hallo erstmal,
bin ein neueinsteiger in Delphi und hab mich an einen Taschenrechner gewagt.
Jetzt hab ich das Prob, dass ein Komma im Editfeld nicht mehr mit angezeigt wird, trotz vorherigem anzeige.
Ich zeig euch einfach mal den Quellcode:
procedure TForm1.btn_kommaClick(Sender: TObject);
var a : double;
begin
a:=strtofloat(edit1.text)+(',');
edit1.text:=floattostr(a);
end;
ich denk doch mal, das Prob liegt in der umwandlung in eine Float, weiss aber nicht wie ich´s anders angehen soll.
Danke euch schon mal im vorraus.
mfg therian :lol:
Raphael O. - Do 16.10.03 17:39
Titel: Re: Komma im Taschenrechner angezeigt lassen?
falls ich dich richtig verstanden habe sollte auch das hier reichen ;)
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.btn_kommaClick(Sender: TObject); begin edit1.text:=edit1.text+','; end; |
tHeRiAn - Do 16.10.03 18:58
hm, wäre schon ausreichend. mein fehler, hab noch was vergessen.
Da ich die Zifferneingabe im Textfeld in eine double abspeichere wird denk ich mal das ',' nicht mit berücksichtigt.
hier der quellcode für die Zifferneingabe:
procedure TForm1.Button0Click(Sender: TObject);
begin
if (edit1.text='') then edit1.text:='0';
a:=strtofloat(edit1.text) * 10 + 0;
edit1.text:=floattostr(a);
end;
Das Komma wird zwar einmal mit angezeigt, doch es wird bei einer Zifferneigabe im Editfeld nicht mehr mit angezeigt.
Raphael O. - Do 16.10.03 19:05
ich weiß nicth genau, was du willst :?
die Anzeige ist eigentlich noch garkein problem...
bei "0-Button" kannst du folgenden Quellcode nehmen:
Delphi-Quelltext
1:
| if not edit1.text="0" then edit1.text:=edit1.text+'0'; |
tHeRiAn - Do 16.10.03 19:14
Ohje, ich seh schon, meine Gabe zu erklären ist wohl doch eher beschränkt.
Ich zeig euch wohl doch besser mal meinen kompletten Quellcode.
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: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180:
| var Form1: TForm1; a, ergebnis, zahl1, zahl2: double; aktion: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin if (edit1.text='') then edit1.Text:='0'; a:= strtofloat(edit1.text)*10 + 1; edit1.Text:=floattostr(a); end;
procedure TForm1.Button2Click(Sender: TObject); begin if (edit1.text='') then edit1.Text:='0'; edit1.Text:=floattostr(strtofloat(edit1.text)*10 + 2); end;
procedure TForm1.Button3Click(Sender: TObject); begin if (edit1.text='') then edit1.text:='0'; a:=strtofloat(edit1.text)* 10 + 3; edit1.Text:=floattostr(a); end;
procedure TForm1.Button4Click(Sender: TObject); begin if (edit1.text)='' then edit1.text:='0'; a:=strtofloat(edit1.text)* 10 + 4; edit1.Text:=floattostr(a); end;
procedure TForm1.Button5Click(Sender: TObject); begin if (edit1.text='') then edit1.text:='0';
a:=strtofloat(edit1.text) *10 + 5; edit1.text:=floattostr(a) end;
procedure TForm1.Button6Click(Sender: TObject); begin if (edit1.text='') then edit1.text:='0'; a:=strtofloat(edit1.Text)* 10 + 6; edit1.text:=floattostr(a); end;
procedure TForm1.Button7Click(Sender: TObject); begin if (edit1.text='') then edit1.text:='0'; a:=strtofloat(edit1.text) * 10 + 7; edit1.text:=floattostr(a); end;
procedure TForm1.Button8Click(Sender: TObject); begin if (edit1.text='') then edit1.text:='0'; a:=strtofloat(edit1.text) * 10 + 8; edit1.text:=floattostr(a); end;
procedure TForm1.Button9Click(Sender: TObject); begin if (edit1.Text='') then edit1.text:='0'; a:=strtofloat(edit1.text) *10 + 9; edit1.text:=floattostr(a); end;
procedure TForm1.Button0Click(Sender: TObject); begin if (edit1.text='') then edit1.text:='0'; a:=strtofloat(edit1.text) * 10 + 0; edit1.text:=floattostr(a); end;
procedure TForm1.btn_kommaClick(Sender: TObject); begin edit1.text:=edit1.text +','; end;
procedure TForm1.FormActivate(Sender: TObject); begin edit1.text:='0'; end;
procedure TForm1.aditionbtnClick(Sender: TObject); begin zahl2:=zahl1; zahl1:=strtofloat(edit1.Text); edit1.Text:=''; aktion:=1; end;
procedure TForm1.subtraktionbtnClick(Sender: TObject); begin zahl2:=zahl1; zahl1:=strtofloat(edit1.Text); edit1.text:=''; aktion:=2; end;
procedure TForm1.multiplikationbtnClick(Sender: TObject); begin zahl2:=zahl1; zahl1:=strtofloat(edit1.text); edit1.text:=''; aktion:=3; end;
procedure TForm1.divisionbtnClick(Sender: TObject); begin zahl2:=zahl1; zahl1:=strtofloat(edit1.text); edit1.text:=''; aktion:=4; end;
procedure TForm1.gleichbtnClick(Sender: TObject); begin if (aktion=1) then zahl2:=strtofloat(edit1.Text); if (aktion=1) then ergebnis:=zahl1+zahl2;
if (aktion=2) then zahl2:=strtofloat(edit1.Text); if (aktion=2) then ergebnis:=zahl1-zahl2;
if (aktion=3) then zahl2:=strtofloat(edit1.text); if (aktion=3) then ergebnis:=zahl1*zahl2;
if (aktion=4) then zahl2:=strtofloat(edit1.text)else; if(zahl2=0) then showmessage('Parameter nicht erlaubt') ; if (aktion=4) then ergebnis:=zahl1/zahl2;
edit1.text:=floattostr(ergebnis);
end;
procedure TForm1.clearbtnClick(Sender: TObject); begin a:=0;
ergebnis:=0; edit1.text:='0';
end;
end. |
[/delphi]
maze2k - Do 16.10.03 19:23
Hmm, also erstmal denk ich das "+0" kannst du dir schenken *lol*
Delphi-Quelltext
1: 2: 3: 4:
| if (edit1.text='') then edit1.text:='0'; a:=strtofloat(edit1.text) * 10; edit1.text:=floattostr(a) + ','; end; |
so sollte das doch gehn oder?
Aber so hast du das Komma nur am Ende...
Ich würd da mit TStringList arbeiten, dann kannst das Komma auch in der Mitte rausholen...
Beispiel-Prozedur:
Du willst zwei Zahlen Addieren....
Zwei Edits, ein + Button:
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:
| procedure TForm1.Button1Click(Sender: TObject); var z : TStringList; n1,n2,n: Integer; t1,t2: String; begin z := TStringList.Create; z.Delimiter := ','; z.DelimitedText := edit1.Text; n1 := Length(z[1]); t1 := z[0] + z[1]; z.Free;
z := TStringList.Create; z.Delimiter := ','; z.DelimitedText := edit2.Text; n2 := Length(z[1]); t2 := z[0] + z[1]; z.Free;
if (n1 > n2) then n := n1 else n := n2; edit3.Text := FloatToStr((StrToInt(t1) + StrToInt(t2)) / power(10,n) ); end; |
Math einbinden nicht vergessen bei den Uses...
Aber vielleicht wär's tausend mal einfach wenn du das Komma einfach durch nen Punkt ersetzt? *g*
Damit kann Float nämlich umgehen...
Aber ich hab die Prozedur trotzdem mal geschrieben... warum auch nich *lol* hab ja sonst nix zu tun
Raphael O. - Do 16.10.03 20:09
man kanns aber auch im Edit mit nem komma anzeigen, dann aber mittels strreplace immer für die Berechnung das Komma in einen Punkt ändern...
maze2k - Do 16.10.03 20:15
Ja das meinte ich ja....
tHeRiAn - Fr 17.10.03 09:38
Hui, jetzt habt ihrs geschafft mich entgültig zu verwirren. aber trotzdem vielen Dank. :-)
@maze2k: ich verwende nur ein edit für Ein- und Ausgabe der Werte. Deine Code sieht zwar gut aus aber noch zu viel für mich.
ich versuchs mal mit strreplace, mal schaun was rauskommt.......
:?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!