Nehmen wir doch den ursprünglichen Quellcode auseinander, dann wird vieleicht besser verständlich was falsch ist:
Delphi-Quellcode:
//Striche x-Achse
for ax := 1 to 9 do
begin
x := Round(92 + (ax - 1) * 61.7); // wird berechnet
y0 := 0; // ist konstant
y1 := 321; // ist konstant
moveto(x, y0);
lineto(x, y1);
end;
//Striche y-Achse
for ay := 1 to 9 do
begin
y := 89; // falsch, muss berechnet werden!
x0 := Round(80 + (ay - 1) * 33); // falsch, muss konstant sein!
x1 := Round(321 + (ay - 1) * 33); // falsch, muss konstant sein!
moveto(x0, y);
lineto(x1, y);
end;
Da sich in der zweiten Schleife ay bei jedem Durchlauf ändert, muss der Wert für y bei jeden Durchlauf neu berechnet werden.
Die Werte für x0 und x1 sollten hier für jede Linie gleich sein, auf keinen Fall abhängig von ay.