In ButtonClick ist nichts doppelt.
Doppelt gemoppelt ist eher das hier:
Delphi-Quellcode:
function tschlange.einfuegen(x: person):boolean;
begin
//hinter dem Array kann man nichts mehr einfügen
Result := Next >0;
x.
Name:= form1.edit1.text;
// ERWITERUNG
x.id := strtoint(form1.edit2.text);
// ERWEITERUNG
if Result
then
begin
//Daten an aktuelle Array-Position schreiben
schlange[Next].
Name := x.
Name;
schlange[Next].Id := x.id;
//Position abziehen
dec(Next);
schlange[next].
Name:=x.
name;
schlange[next].id := x.id;
end;
end
nämlich das 2. Mal Schlange[next].name und Schlange[next].id.
Warum?
Weil die Zuweisung bereits bei "Daten an aktuelle Position schreiben" erfolgt. Die 2. Zuweisung darunter erfolgt nicht nur unnötig doppelt, sondern zu allem Überfluss noch nach der Dekrementierung des Index Next. So steht dann der Name mit gleicher ID zwei Mal in der Schlange. Hintereinander. Das geht logisch nicht, ist Fehler, weil eine Person nur einmal in der Schlange stehen kann. Diese kann maximal zu einem späteren Zeitpunkt NACHDEM sie an der Kasse schon bezahlt hat, nochmals kommen.
Denn der Name der Person hat sich zwischenzeitlich im Code vor der 2. Zuweisung noch nicht geändert, ist also mit Sicherheit noch dieselbe Person.
.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.