Borderland Delphi for Schleife?
Guten Tag, wir haben letzte Stunde in Informatik mit den for schleifen angefangen und nun eine Aufgabe bekommen, die wir zuhause lösen müssen, da wir Ausfall hatten. Die Aufgabe lautet : "man soll beliebig viele Zahlen über die Eingabe/Edit-Feld in die Procedure eingeben, welche alle addiert werden können". Ich vermute das man eine for Schleife verwenden muss, da wir die zuletzt angefangen haben. Allerdings weiß ich nicht mehr, weil wir es vor einem Jahr zuletzt hatten, wie man das so macht, das man eine Zahl in das edit Feld eingibt, auf den Button klickt, und diese Zahl dann 'gespeichert' wird, so daß ich eine neue Zahl in das selbe Edit-Feld eingeben kann die dann mit der gespeicherten Zahl addiert wir und immer so weiter. Falls jemand meinem Gedächtnis auf die Sprünge helfen könnte, wäre ich sehr dankbar.
LG
2 Antworten
Schonmal überlegt ein Liste zu machen. Du lässt die Zahlen in einer Liste speichern und kannst die dann auch addieren lassen. Wenn nicht dann schreib mir nochmal.
Die grafische Oberfläche kannst du dir zusammenklicken und über den Objekt Inspektor dem Button ebenfalls einen Event Handler (Prozedur) verpassen, der auf Klickereignisse reagiert. Ich denke, mit diesem Teil solltest du keine Probleme haben.
Im Folgenden sollte klar gestellt werden, welche Daten tatsächlich gespeichert werden sollen. Wenn nur die Summe von Interesse ist, reicht es aus, sich ein einfaches numerisches Feld anzulegen und bei jedem Klick einfach nur den Wert des Textfeldes aufzurechnen. Sollten allerdings alle Eingaben nachverfolgbar sein, wäre ein Array oder eine Liste zu empfehlen.
Ich zeige im folgenden den letztgenannten, längeren Weg. Das folgende Snippet zeigt zunächst das Anlegen einer Liste und eines Arrays.
type
{ ... }
var
Numbers: TList<Integer>; // a list of integers
Numbers2: array of Integer; // an array of integers
begin
Self.Numbers := TList<Integer>.Create; // define
end.
Innerhalb der Prozedur holst du dir den Wert des Eingabefeldes und konvertierst ihn in einen numerischen Typ.
procedure YourForm.YourButtonClickHandler(Sender: TObject);
var
number: Integer;
index: Integer;
begin
number := StrToInt(yourEditField.Text);
// with list
Self.Numbers.Add(number);
// with array
index := Length(Self.Numbers2)
SetLength(Self.Numbers2, index + 1);
Self.Numbers2[index] := number;
end;
Um die Summe aller Elemente zu berechnen, wäre dann tatsächlich auch eine Schleife von Bedeutung.
Mein Snippet zeigt nur, wie man über ein Array / eine Liste iteriert (in beiden Fällen ist das Vorgehen gleich). Dies für eine Summenberechnung auszubauen, überlasse ich dir.
var
item: Integer;
begin
for item in Self.Numbers do
// do something ...
end.
Ich möchte dir erstmal sehr sehr dolle danken, für deine lange und bemuhende Antwort. Aber tatsächlich muss ist nur die Summe von Interesse, aber ich weiß eben nicht mehr wie man das gemacht hat, diese immer weiter aufzubrechen, so einfach es auch sein mag 😅
Ne da habe ich tatsächlich noch nicht dran gedacht, un weiß umsuch nihmcht ganz wie das umgesetzt wird, daher schreib ich dir hiermit. :) allerdings schlafe ich jetzt erstmal, es tut mir daher leid wenn ich nicht zeitnahe antworte, sondern erst in ein paar Stunden