Entwickler-Ecke

Sonstiges (Delphi) - Summe zweier Zahlen mit nur einem edit-feld?


DerDelphiAnfänger - Fr 30.09.11 17:39
Titel: Summe zweier Zahlen mit nur einem edit-feld?
Hallo,
Ich frage mich, ob es eine einfache möglichkeit gibt, Zwei Zahlen zu addieren mit nur einem Edit-Feld, anstatt Zwei.

schon einmal danke im voraus :D


jaenicke - Fr 30.09.11 17:54

Überlege dir doch einfach einmal was du der Reihe nach ausführst, wenn du das machen würdest. Du kannst ja auch den Windows-Rechner zu Rate ziehen und es ausprobieren.

Und dann überlege dir was bei jedem Tastendruck passieren muss. Nur bei jedem einzelnen Tastendruck. Und dann schaue wie viele verschiedene Reaktionen benötigt werden.

Einfach zu verstehen ist das als Anfänger nicht für jeden. ;-) Das Prinzip nennt sich endlicher Automat.


Delphi-Laie - Fr 30.09.11 21:20

user profile iconDerDelphiAnfänger hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
Ich frage mich, ob es eine einfache möglichkeit gibt, Zwei Zahlen zu addieren mit nur einem Edit-Feld, anstatt Zwei.

schon einmal danke im voraus :D


Editfeld füllen, dann irgendeinen (Additions-)Button drücken, Editfeld in Zahl umwandeln und diesen numerischen Wert zwischenspeichern, Editfeld zweckmäßigerweise (Softwareergonomie!) löschen bzw. leeren, nächste Eingabe im Editfeld, dann wiederum auf den Additionsbutton (bei mehreren Summanden) oder auf einen Enter-/Istgleichbutton klicken, wiederum in Zahl umwandeln, addieren und das (Zwischen-)Ergebnis wiederum im Editfeld anzeigen.

Jeder gewöhnliche Taschenrechner (auch der in Windows) macht es vor (programierbare Taschenrechner und solche mit umgekehrter polnischer Notation einmal ausgenommen, die sind auch nicht gewöhnlich). Insofern hat jaenicke recht.


Delete - Sa 01.10.11 09:41

Man kann auch alles in das Edit-Feld eintragen und dann von einem Math-Parser bearbeiten lassen.
Oder anders - Beispiel:
Weitere Möglichkeit: den String splitten mit dem "+"-Zeichen als Separator.


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:
function isNumeric(c : char) : Boolean;
begin
  result:= CharInSet(c,['0'..'9']);
end;

Procedure Test2;
var
  strA, strB, strString: String;
  chrA: Char;
  intA: Integer;
begin
strString:= Form1.Edit1.Text;
intA:=0;

repeat
  inc(intA);
  chrA := strString[intA];
  if IsNumeric(chrA) then strA := strA + chrA;
until IsNumeric(chrA)=false or (intA = Length( strString));
Form1.Label1.Caption:= strA;

repeat
  inc(intA);
  chrA := strString[intA];
  if IsNumeric(chrA) then strB := strB + chrA;
until intA = Length( strString);

Form1.Label2.Caption:= strB;
if (strA<>''and (strB<>''then
Form1.Label3.Caption:= IntToStr(StrToInt(strA)+StrToInt(strB));
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:='1719+811'//ohne Zwischenraum
Test2;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:='1719 + 811'//mit Zwischenraum
Test2;
end;


storestore - So 02.10.11 20:49

Hi,
mich würde das ganze mal in c# interessiern. Wäre jemand so lieb mir mal ein Beispiel in c# zugeben?
Mfg storestore


Narses - So 02.10.11 23:16

Moin!

user profile iconDerDelphiAnfänger hat folgendes geschrieben Zum zitierten Posting springen:
Ich frage mich, ob es eine einfache möglichkeit gibt, Zwei Zahlen zu addieren mit nur einem Edit-Feld, anstatt Zwei.
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Einfach zu verstehen ist das als Anfänger nicht für jeden. ;-) Das Prinzip nennt sich endlicher Automat.
So ist es. Und hier ist eine Beispiel-Implementation dazu [http://www.delphi-forum.de/viewtopic.php?p=398242#398242]. :les: :think: Wie user profile iconjaenicke und ich aber schon sagten [http://www.delphi-forum.de/viewtopic.php?p=651264#651264], ist das nix für einen Anfänger... :? :nixweiss:

cu
Narses