Autor Beitrag
V!P3R
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151



BeitragVerfasst: So 14.10.07 15:42 
hi,

ich programmiere einen taschenrechenr (ich versuche es zumindest, schließlich bin ich anfänger)

und will mir jez die delphi funktion, + - * / , zu nutze machen (muss man so oda so, ich will aber abkürzen)

delphi kann sowas ja leicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.B_addClick(Sender: TObject);
begin
E_result.Text:= FloatToStr(StrToFloat(E_zahl1.Text) + (StrToFloat(E_zahl2.Text)));
end;


jetzt will ich es schaffen, das der nicht nur den text aus E_zahl1 + den text aus E_zahl2 rechnet,sondern das, was im Edit1 Feld (also das feld, in das man beim taschenrechner immer reinschreibt) steht, sofort in das E_result Feld schreibt und ausrechnet
(Beispielversuch:)

ausblenden Delphi-Quelltext
1:
E_result.text:=FloatToStr(StrToFloat(Edit1.text));					

oder

ausblenden Delphi-Quelltext
1:
E_result.text:=StrToFloat(Edit1.text);					

oder

ausblenden Delphi-Quelltext
1:
E_result.text:=FloatToStr(Edit1.text);					


das klappt aber alles nicht.
Bei beispiel 1 schreib er einfach den wert von edit1 in e_result, vorausgesetz es is nur ne zahl
(ich weiß schon das das so nicht stimmen kann)

und bei den andern zeigt delphi nen fehler an

kann man das irgentwie elganter lösen, und vorallem: kann man das überhaupt lösen?



MfG


Zuletzt bearbeitet von V!P3R am So 14.10.07 15:52, insgesamt 1-mal bearbeitet
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 14.10.07 16:15 
user profile iconV!P3R hat folgendes geschrieben:

kann man das irgentwie elganter lösen, und vorallem: kann man das überhaupt lösen?

Man kann es sicherlich lösen, wenn du uns das ganze etwas genauer beschreibst :wink: . Ich versteh zur zeit nur Bahnhof.

Wie viele Eingabefelder hast du denn und was soll geschehen, wenn du in die Eingabefelder Ziffern (!Keine Texte) eingibst?

Du wirst jetzt vllt. sagen, dass du das schonmal geschrieben hast, aber erklär es mal anders und gib mal ein konkretes Beispiel mit Zahlen.
V!P3R Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151



BeitragVerfasst: So 14.10.07 16:30 
Titel: kay
Ich habe 1 Eingabe Feld:Edit1
Und ein Ausgabe Feld: E_result
Und den Button: B_enter

Die weitere oberfläche ist (bis jetz) mit ziffern (von 0-9) und / * - + , x² ausgestattet
Die Ziffern (Buttons mit Caption 0 -9) und die rechenzeichen (auch buttons) hab ich wie folgt programmiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure Trechner.B_0Click(Sender: TObject);
begin
Edit1.SelText:='0'
end;


man kann jetzt also mit den buttons oder mit den ziffern auf der tastatur das feld Edit1 Füllen.

sobald man auf den Button : B_enter drückt, sollen die ziffern und rechenzeichen aus edit 1: Bsp: 12+3-5
ausgewertet werden und in das feld e_result geschrieben werden. Bsp: (12+3-5) 10

was muss ich schreiben, damit delphi diese ziffern und rechenzeichen auswertet und ins feld e_result schreibt?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure Trechner.B_enterClick(Sender: TObject);
var ???:???
begin
???
end;



Jetzt verständlich??


MfG
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 14.10.07 16:36 
Hi,

das ganze ist nicht so einfach wie es scheint. Du musst erst den String zerlegen.

Ungefähr so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  Value:=0;

  while Pos('+',Str)>0 do
    begin
      Value:=Value+strtofloat(Copy(Str,1,Pos('+',Str)-1); //schneidet aus dem String alles bis zum + raus
      Str:=Copy(Str,Pos('+',Str)+1,Length(Str)); //alles vor und das + löschen
    end;


Zumindest vom Prinzip her funktioniert das so. Das ganze muss man dann noch mit -,/,* usw. machen

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)