Autor Beitrag
tHeRiAn
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 16.10.03 17:35 
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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Do 16.10.03 17:39 
falls ich dich richtig verstanden habe sollte auch das hier reichen ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.btn_kommaClick(Sender: TObject);
begin
edit1.text:=edit1.text+',';
end;
tHeRiAn Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
if not edit1.text="0" then edit1.text:=edit1.text+'0';					
tHeRiAn Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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.

ausblenden volle Höhe 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
//a:=strtofloat(edit1.text)+(',');
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=1then zahl2:=strtofloat(edit1.Text);
   if (aktion=1then ergebnis:=zahl1+zahl2;

   if (aktion=2then zahl2:=strtofloat(edit1.Text);
   if (aktion=2then  ergebnis:=zahl1-zahl2;

   if (aktion=3then zahl2:=strtofloat(edit1.text);
   if (aktion=3then ergebnis:=zahl1*zahl2;

   if (aktion=4)  then zahl2:=strtofloat(edit1.text)else;
       if(zahl2=0then showmessage('Parameter nicht erlaubt') ;
   if (aktion=4then 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 252

WIN 95, WIN NT 4.0, WIN 98, WIN 98SE, WIN 2000, RedHat Linux 7.3, Mandrake Linux 9.2, Knoppix Linux 3.3
D6 Pers
BeitragVerfasst: Do 16.10.03 19:23 
Hmm, also erstmal denk ich das "+0" kannst du dir schenken *lol*

ausblenden 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:

ausblenden 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;  // Nachkommastellen
  t1,t2: String;   // Temporärvariablen
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

_________________
Wer das Konzept der Unendlichkeit verstehen will, muss nur das Ausmaß menschlicher Dummheit betrachten. (Voltaire)
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 252

WIN 95, WIN NT 4.0, WIN 98, WIN 98SE, WIN 2000, RedHat Linux 7.3, Mandrake Linux 9.2, Knoppix Linux 3.3
D6 Pers
BeitragVerfasst: Do 16.10.03 20:15 
Ja das meinte ich ja....

_________________
Wer das Konzept der Unendlichkeit verstehen will, muss nur das Ausmaß menschlicher Dummheit betrachten. (Voltaire)
tHeRiAn Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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.......

:?