Autor Beitrag
holzlump
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 12.02.09 19:01 
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:

ausblenden 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 user profile iconKha: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.
ausblenden Delphi-Quelltext
1:
procedure TForm1.Button1Click(zahl1,zahl2,ergebnis:integer;Sender: TObject);					
Richtig sieht das so aus:
ausblenden 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:
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? ;-)
ausblenden 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);
    // Nur True, also erfolgreich, zurückgeben, wenn beide Zahlen
    // erfolgreich als Zahlen erkannt und umgewandelt wurden.
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b: Integer;
begin
  if Einlesen(a, b) then // Wenn die beiden Zahlen eingelesen wurden
  begin
    Ergebnis := a + b; // das Ergebnis berechnen
    Ausgeben(Ergebnis); // und ausgeben, das musst du noch schreiben
  end
  else
    ShowMessage('Bitte richtige Eingaben machen!');
end;