| Autor |
Beitrag |
navarro2010
      
Beiträge: 25
Erhaltene Danke: 1
|
Verfasst: Mo 23.05.11 17:31
Hallo,
kann mir jemand bitte mal einen kompletten, aber einfachen Quelltext mit einer Function einstellen, bei der man auch etwas eingeben kann und ein Ergebnis angezeigt bekommt?
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 23.05.11 17:35
Moin!
navarro2010 hat folgendes geschrieben : | | kann mir jemand bitte mal einen kompletten, aber einfachen Quelltext mit einer Function einstellen, bei der man auch etwas eingeben kann und ein Ergebnis angezeigt bekommt? |
Delphi-Quelltext 1: 2: 3: 4:
| function bekloppt(egal: Integer): Integer; begin Result := 42; end; | Und was soll das bringen?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
navarro2010 
      
Beiträge: 25
Erhaltene Danke: 1
|
Verfasst: Mo 23.05.11 17:51
Wie kann ich zum Beispiel zwei Zahlen addieren lassen. Ich möchte sie aber selbst vor dem berechen eingeben und nicht im Quelltext schon festlegen. Wie kann ich dann ein Ergebnis angezeigt bekommen?
Für diesen Beitrag haben gedankt: Tintenblut
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Mo 23.05.11 17:56
Wie würdest du das auf einem Blatt Papier machen?
Delphi-Quelltext
|
|
navarro2010 
      
Beiträge: 25
Erhaltene Danke: 1
|
Verfasst: Mo 23.05.11 18:05
Was hat das mit meiner Frage zu tun? Muss ich da noch ein Edit-Feld einfügen, oder wie geht das? Im Quelltext darf ich bei Functions nämlich keine Editfelder benutzen.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 23.05.11 18:14
Für diesen Beitrag haben gedankt: navarro2010
|
|
Nano-Ware
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Mo 23.05.11 22:05
So..
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function addiere(z1, z2: Integer): Integer; begin Result := z1 + z2; end;
Edit_Ergebnis.Text := IntToStr(Addiere(StrToInt(Edit_z1.Text), StrToInt(Edit_z2.Text)));
|
Gruß
|
|
beastofchaos
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: Mo 23.05.11 23:12
Mach dir af dein Formular 3 Editfenster, mach einen Button daneben und die OnClick-Prozedur des Buttons schreisbte folgendes:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var Summe, Zahl1, Zahl2: integer; begin Zahl1 := StrToInt(Edit1.Text); Zahl2 := StrToInt(Edit2.Text); Summe := Add(Zahl1, Zahl2); Edit3.Text := IntToStr(Summe); end; |
So, nachdem du das hast, definier dir mal die Funktion Add:
Delphi-Quelltext 1: 2: 3: 4:
| function Add(a, b: Integer): Integer; begin Result := a + b; end; |
Dann spielste das ab, gibst in Edit1 und Edit2 jeweils eine Zahl ein, drückst deinen Button und schon haste das Ergebnis
Gruß, Thomas
|
|
Nano-Ware
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Di 24.05.11 17:30
Und was ist jetzt an deinem Code anders außer, dass du unnötig drei Variablen deklarierst?
|
|
Tony-S
      
Beiträge: 184
Erhaltene Danke: 6
Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
|
Verfasst: Di 24.05.11 17:52
Nano-Ware hat folgendes geschrieben : | | Und was ist jetzt an deinem Code anders außer, dass du unnötig drei Variablen deklarierst? |
Vermutlich ist es für einen Anfänger so übersichtlicher und leichter zu verstehen?
Für diesen Beitrag haben gedankt: beastofchaos, Kha
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Di 24.05.11 20:21
... und wenn du das Grundlagen-Tutorial gelesen hast kannst du gleich noch eine Fehlerbehandlung einbauen. Teste mal die Eingabe eines Buchstaben in das Editfeld.
|
|
beastofchaos
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: Di 24.05.11 21:58
|
|
Hobby-Programmierer
      
Beiträge: 238
Erhaltene Danke: 4
Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
|
Verfasst: Mi 25.05.11 00:36
Ich würde das da abfangen wo der Text (TEdit) eingegeben wird
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.AllEditKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9']) then begin Key:= #0; Beep; end; end; |
Wenn allerdings das reinkopieren von Text ebenso verhindert werden soll, muss man das im OnChange Event des Editfeldes selber abfangen. Eventuell so
(nicht perfekt - aber naja - für mich hats immer gereicht)
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:
| procedure TForm1.AllEditChange(Sender: TObject); var i: Integer; s: String; begin with (Sender as TEdit) do begin if StrToIntDef(Text, -1) = -1 then begin s:= ''; for i:= 1 to Length(Text) do if Text[i] in ['0'..'9'] then s:= s+ Text[i]; Text:= s; SelStart:= Length(s); end; end; end; |
LG Mario
|
|
jaenicke
      
Beiträge: 19338
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 25.05.11 04:35
StrToIntDef ist dafür denkbar ungeeignet, dafür gibt es extra TryStrToInt.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 25.05.11 06:50
beastofchaos hat folgendes geschrieben : | Also ich löse dann durch ein paar if-Fragen am liebsten, viele machen das ja durch try, aber ich find das iwie nicht so toll  |
Das vergleiche ich mal mit Autofahren :
Wenn du anhalten willst, benutzt du lieber einen Wurfanker anstatt der Bremse ?
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
beastofchaos
      
Beiträge: 247
Erhaltene Danke: 4
|
Verfasst: Mi 25.05.11 13:06
|
|