holzlump - Do 12.02.09 19:01
Titel: procedure einlesen um später unnötige variablen zu vermeiden
Hallo wir sollen in informatik einen taschenrechner programmieren.Soweit so gut nur soll dieser eine procedure enthalten,die die zahlen einliest.Dannach sollen dann die anderen proceduren wie zum beispiel procedure addition auf die variablen zu greifen.Ich bekomme das irgentwie nicht hin.der compiler sagt mir dass edit1 undefiniert sei.Hier mal mein quellcode:
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:
| implementation
Procedure Einlesen(Sender: TObject;var zahl1,zahl2,ergebnis:integer); Begin zahl1:=StrToInt(edit1.text); zahl2:=StrToInt(edit2.text); Ergebnis:=IntToStr(edit3.text); end; {$R *.dfm}
procedure TForm1.AdditionClick(zahl1,zahl2,ergebnis:integer;Sender: TObject);
begin Ergebnis:=zahl1+zahl2; ;
end;
procedure TForm1.Button1Click(zahl1,zahl2,ergebnis:integer;Sender: TObject);
begin
Ergebnis:=zahl1*zahl2; end; |
Moderiert von
Kha: Delphi-Tags hinzugefügt
jaenicke - Do 12.02.09 19:24
Titel: Re: procedure einlesen um später unnötige variablen zu verme
Hallo und :welcome:
Du musst die Prozedur als zu deinem Formular gehörig deklarieren oder mit
Form1.Edit1. Delphi sagen, dass du das Edit1 in Form1 meinst.
Zudem sind deine Prozeduren falsch deklariert. Die werden bei einem Doppelklick auf den Button doch automatisch erstellt. Wenn du sie selbst änderst, dann funktioniert das nicht mehr.
Delphi-Quelltext
1:
| procedure TForm1.Button1Click(zahl1,zahl2,ergebnis:integer;Sender: TObject); |
Richtig sieht das so aus:
Delphi-Quelltext
1:
| procedure TForm1.Button1Click(Sender: TObject); |
Das muss aber auch als Ereignis zugewiesen sein, sonst passiert gar nix. ;-)
In Einlesen ist es irgendwie unpassend auch das Ergebnis-Editfeld auszulesen, da soll ja das Programm das Ergebnis hineinschreiben und nicht der Benutzer.
Ich empfehle dir einmal einen Crashkurs:
http://crashkurs.christian-stelzmann.de
Sinnvoll wäre es auch, wenn du schaust, ob in den Edits überhaupt Zahlen stehen, aber das musst du natürlich nicht machen.
Wie wäre es so? ;-)
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:
| type TForm1 = class(TForm) ... private function Einlesen... end;
...
function TForm1.Einlesen(var zahl1, zahl2: Integer): Boolean; Begin Result := TryStrToInt(Edit1.Text, zahl1) and TryStrToInt(Edit2.Text, zahl2); end;
procedure TForm1.Button1Click(Sender: TObject); var a, b: Integer; begin if Einlesen(a, b) then begin Ergebnis := a + b; Ausgeben(Ergebnis); end else ShowMessage('Bitte richtige Eingaben machen!'); end; |