Um es mit anderen Worten zu sagen:
- eine halbwegs "ordentliche" Codeformatierung hilft enorm beim Verstehen von Code, vorallem was wie zusammengehört.
- und "sprechende" Namen für Komponenten helfen noch viel mehr, weil man dann weiß wofür die Komponente ist
Mit dem Debugger sollte man in Grundlegenden Dingen schon zurecht kommen und ihn vorallem vauch verwenden.
- was soll gemacht werden (das weiß man ja selber)
- was macht das Programm wirklich (das sieht man im Debugger)
- - Haltepunkte setzen
- - mit F7/F8 Schritt für Schritt den Code durchgehn
- - sich Werte von Variablen ansehen
Und mit dem Wissen kann man nun die gefundenen Fehler beheben.
Zitat:
Delphi-Quellcode:
procedure TForm1.Start1Click(Sender: TObject);
begin
with form1 do
horiz:= 4;
horiz2:= 4;
vert:= -2;
timer1.Enabled:= true;
timer2.Enabled:= false;
end;
Delphi-Quellcode:
procedure TForm1.Start1Click(Sender: TObject);
begin
with form1 do
horiz:= 4;
horiz2:= 4;
vert:= -2;
timer1.Enabled:= true;
timer2.Enabled:= false;
end;
Das WITH gehört also nur zur ersten Variable.
Außerdem: Warum greifst du innerhalb von TForm1 auf die Form1?
Du bist ja schon da drin und mußt dir nicht nochmal die (eventuell sogar falsche) Referenz besorgen.
(vorallem wenn die TForm mehrfach erstellt wurde, steht in Form1 nicht unbedingt das, was man möchte)
Zitat:
Delphi-Quellcode:
if ((shape3.Left <= shape1.Left + shape1.width ) and (shape3.Top >= shape1.Top - 10) and (shape3.Top <= shape1.Top + shape1.Height))
then
direction:= 5;
if direction = 1 then
timer1.Enabled:= false;
timer2.Enabled:= true;
end;
Oder das aus Timer1Timer
Delphi-Quellcode:
if ((shape3.Left <= shape1.Left + shape1.width ) and (shape3.Top >= shape1.Top - 10) and (shape3.Top <= shape1.Top + shape1.Height)) then
direction:= 5;
if direction = 1 then
timer1.Enabled:= false;
timer2.Enabled:= true;
end;