Guten Tag,
ich habe mich jetzt man dran gesetzt und versucht ein bisschen Delphi zu lernen. Mein erstes Projekt war ein Taschenrechner. Leider funktioniert der Code nicht und ich wüsste gerne warum.
Druckbare Version
Guten Tag,
ich habe mich jetzt man dran gesetzt und versucht ein bisschen Delphi zu lernen. Mein erstes Projekt war ein Taschenrechner. Leider funktioniert der Code nicht und ich wüsste gerne warum.
Was willst du mit dem "repeat ... until z <= 1" machen? Ein Taschenrechner der Plus und Minus rechnet braucht das nicht.
Wenn du in Delphi Codeblöcke haben möchtest, dann musst du sie mit "begin ... end" einschließen.
Zum Beispiel:
Code:if n = 10 then
begin
Zahl := StrToInt(Edit1.Text);
Zahl2 := StrToInt(Edit2.Text);
ergebnis:=Zahl+Zahl2;
Zahl3 :=IntToStr(ergebnis);
ShowMessage(Zahl3);
end;
Ja, bin ja gerade erst am Anfang. Hab einfach bisschen ausprobiert. Hast du ein gutes Tutorial für mich? Oder ein Programm das sie einfach verwirklichen lässt?
Tipps & Tricks - Delphi-Treff
Willkommen auf Delphi-lernen.de
guck dich da ma um
Das "Jetzt lerne ich Delphi" EBook ,dass ich hier vor kurzem geuppt habe ist ebenfalls recht gut für den Anfang.
http://free-hack.com/delphi/67040-%5...phi-ebook.html
LG
-vin-
Habt ihr Ideen was für ein Programm ich coden könnte?
@Agent_Smith
Das sind die ersten Tutorials die bei Google kommen. -.-'
Habe vor einiger Zeit auch mit Delphi/Lazarus angefangen und auch einen Rechner gemacht vllt hilft dir der Code ein wenig.
Nen Tut hatte ich leider nicht was etwas getaugt hatte aber konnte einiges durch rumprobieren lernen und habe einen Bekannten, Buddy die zur Stelle sind mit Rat und tat.
Das kann ich eher empfehlen als nen Tut.
Hoffe das hilft.
ps: sry das es net richtig eingerückt ist xD
Einfach C&P geht leider nicht, wenn du willst kann ich dir das auch schicken.
Nein, ist schon okay. Möchte das ja selber schaffen. :D
Also ich habe jetzt einen neuen Taschenrechner gemacht. Mit 4 RadioButtons für die Rechenarten. Und ein Button um die Rechnung zu lösen. Jetzt möchte ich das wenn einer der RadioButtons gedrückt wird das sich einfach nur eine Variable ändert:
und dann einfach beim klicken auf den "Gleich" Button benutzt wird:Code:procedure TForm1.RadioButtonAdditionClick(Sender: TObject);
begin
rechenoperator:=+;
Wie füge ich die Variable korrekt ein?Code:procedure TForm1.Gleich1Click(Sender: TObject);
begin
a:=StrToInt(Zahlenfeld1a.Text);
b:=StrToInt(Zahlenfeld1b.Text);
int_ergebnis := a[VARIABLE]b;
Loesung1.Text := FloatToStr(int_ergebnis);
EDIT:
Habe mal in einem Delphi Forum nachgefragt. Hab jetzt einen bessere Lösung:
Such aber immernoch Vorschläge dafür was ich als nächtes coden soll.
Zuersteinmal kannst du nicht einfach nen Rechenoperator in eine Variable packen :D Das würde dir verdammt viele Komplikationen bereiten, wie z.b. beim Teilen durch 0.
Du kannst deine Variable 'rechenoperator' als 'char' deklarieren (rechenoperator: Char; ) und da dann ein Zeichen wie z.b. +, -, * und / drin speichern (z.B. rechenoperator := '+'; ).
Beim Klick auf den Rechnen-Button musst du dann halt abfragen, welches Rechenzeichen die Variable rechenoperator hat. Das geht so:
Dieser Code soll dir nur zeigen, wie man das nutzt. Wenn die Variable 'ergebnis' ein int ist, wirst du beim Dividieren ein weiteres Problem bekommen (Gleitkommazahlen ist das Stichwort ;))Code:
case rechenoperator of
'+': ergebnis := a + b;
'-': ergebnis := a - b;
'*': ergebnis := a * b;
'/':
begin
if b <> 0 then
ergebnis := a / b
else
showmessage('Division by Zero!');
end;
So, und nun viel Spass weiterhin beim Lernen :D
Edit: Da warste wohl schneller :) aber gib bei deinem Taschenrechner mal 4 und 3 ein und dividier das ;) oder 3 und 0. Solche Fehler zu erkennen und zu entfernen ist mMn eine wesentlich bessere Übung, als ein Progrämmchen nach dem anderen "hinzuschmieren". (Ist nett böse gemeint)
Warum kriege ich so viele Fehler wenn ich versuche deinen Code reinzupasten?
Aber trotzdem Danke für den Tipp!
weil du nicht meinen Code da reingenommen hast :D
Schau dir das mal genau an ;) Der Lerneffekt wird sich dann sicher stark bemerkbar machen, was die Syntax der Case of-Bedingung angeht.Code:'/':
begin
if b <> 0 then
ergebnis := a / b
else
Ausserdem musst du die Variable, die bei mir ergebnis heisst, in deine Ergebnis-beimhaltende Variable umbenennen ;)
Bekomme immer noch Fehler:
Immoment tue ich mich noch ziemlich schwer mit der Reihenfolge daher auch diese ganzen "XXX expected but XXX found"
Irgendwie jemand ein gutes Tutorial zum Aufbau von Delphi?
Du hast da noch ein else drin, dem nichts folgt ausser ein 'end;'.
Nimm das else mal raus, dann sollte es gehen ;)
Du solltest dir wirklich zuerst die Grundlagen aneignen, was Code-Blöcke, Bedingungen und Schleifen in Delphi angeht.
Ein Ebook dafür wurde dir in diesem Thread schon gepostet.
Du musst das else duch ein end; ersetzen, da du ein begin immer durch ein end; abschließen musst.
Ich würde vielleicht erstmal paar Grundkenntnisse empfehlen.
Ein Taschenrechner ist das schon die richtige Wahl, allerdings solltest du paar Grundregel lernen, und die schreibweise bei Delphi nicht vergesen.
Bin jetzt gerade am E-Book durcharbeiten. Komme gut voran. Verstehe jetzt auch die Schreibweise in Delphi. Hab aber am meisten Problemen mit if-Statements:
In der Zeile davor fehlt das abschliessende Semikolon ;)
Jungs Ihr bringt Ihn durcheinander.
Es fehlt in seinem Beispiel gar nichts, es sei denn er möchte es um weitere Befehle erweitern.
Beispiel
wenn du nach else ein begin end einbauen willst weil du mehrere Befehle ausführen willst dann erst muss es mit ; enden.Code:If IsDriveReady ('S') then
begin
CoolTrayIcon1.IconVisible := True;
Application.ShowMainform := false;
timer1.enabled := true;
timer1.Interval := 1000;
Sekunden := 60 ;
end
else
CoolTrayIcon1.MinimizeToTray := false;
// WICHTIG!!! Kein End nach else
Bei
schliesst du die Schleife mit dem "dein Befehl" abCode:begin
end
else
dein Befehl ;
Hier noch ein anderes Beispiel , etwas erweitert.
Code:var a:integer;
begin
if a = 1 then
begin
end
else if a=2 then
begin
end
else if a=3 then
begin
end
end;
@Pinkywesen In deinem Bild kann ich dein Fehler sehen.
Ich habe keine Lust dein Code zu tippen.
Fehler in deiner markierten Zeile.
Du öfnest mit beginn, bearbeitest deine Befehle, schliesst aber nicht ab die Schleife, haust aber ein else in eine Unterschleife. So geht es nicht.
Es gibt zwar viele Wege nmach Rom, eine kleine KOrrektur aber bringt dich weiter.
Tausche deine markierte Zeile mit der >Zeile
else
Schon geht es.
Zu dem Code sage ich nun nichts, du fängst gerade an, also solltest du auf die Funktionalität achten, alles Andere ist erstmal nicht so wichtig.
Noch ein paar allgemeine Hinweise:
Du kannst einen Integer-Überlauf so nicht einfach abfangen.
Das machst Du am besten mit einen try..except-Block und fängst die Exception EIntegerOverflow ab.
Dann solltest Du Dir auch noch angewöhnen lokale-Variablen zu benutzen und dein "Problem"/Aufabe in kleine Teilaufgaben (Funktionen, Prozeduren) zu unterteilen. Bei Dir bietet sich für den Rechenoperator z.B. ganz gut ein enum an und eine Funktion, welche Dir den entsprechenden Operator liefert, dann sparst du Dir auch die ganzen OnClick-Events.
Wenn du es bis jetzt immernoch nicht hinbekommen hast kann ich dir ein kleines Tut schreiben was die Grundlagen erklärt und auf einem kleinen Rabatt-Rechner basiert.
Schreib einfach ne PN bei Bedarf.
Habe jetzt den Taschenrechner fertig gecodet. Funktioniert soweit. Hat jemand Vorschläge was ich noch einbauen könnte? Oder was für ein anderes Programm ich machen könnte?
THX an alle für ihr Hilfe!