Autor Beitrag
delphianer5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Sa 06.03.10 15:04 
Hi,

ich lerne delphi in der Schule und habe Probleme bei einem Projekt.Bei dem Projekt geht es dadrum das man Bilder mittels eines Timers auf dem Bildschirm wandern lässt.Erstmals noch eine allgemeine Frage:
Ich will das wenn das Bild oben auf dem Fenster herauswandert unten wieder herauskommt.Ich will das mit einer if-Anweisung lösen, also if Bild.Left>form1."...".
Das Problem ist das ich nicht weiß was ich bei form1."..." hinschreiben soll.Wenn es rechts rauswandert heißt ja width nur wie wenns oben rauswandert?

Problem 2 und das ist das größere Problem.

Ich hab das Projekt geschrieben und es funktioniert teilweise.Die Bilder wandern so wie ich will nur sie fangen direkt an zu wandern,wenn die exe geöffnet wird,das sollen sie aber nicht.Habe dan Tex auf Buttons programmiert und sie sollten erst bei klick ausgelöst werden tun sie aber nicht.
Könnt ihr mir helfen?

Quellcode:
ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
unit UAutotimer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Background: TImage;
    F430: TImage;
    Lenkrad: TImage;
    Links: TButton;
    Pedal: TImage;
    Bremse: TButton;
    Rechts: TButton;
    Gas: TButton;
    Timer1: TTimer;
    Hummer: TImage;
    Pedal2: TImage;
    Gas2: TButton;
    Button2: TButton;
    Timer2: TTimer;
    Timer3: TTimer;
    Hummer2: TImage;
    Timer4: TTimer;
    procedure GasClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BremseClick(Sender: TObject);
    procedure Gas2Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure LinksClick(Sender: TObject);
    procedure Hummer2Click(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.GasClick(Sender: TObject);
begin
if Gas.Caption='Gas'
 then
  begin
  Timer1.Enabled:=True;
  Gas.Caption:='Gas s';
  end
else
  begin
  Timer1.Enabled:=False;
  Gas.Caption:='Gas';
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Timer1.Enabled=True
 then
  begin
  F430.Left:=F430.Left + 1;
  end
else
  begin
  F430.Left:=F430.Left + 0;
  end;

if F430.Left>form1.width
 then
  begin
  F430.Left:=0;
  F430.Left:=F430.Left + 1;
  end
else
  begin
  F430.Left:=F430.Left + 0;
  end;
end;
procedure TForm1.BremseClick(Sender: TObject);
begin
if Timer1.Enabled=True
 then
  begin
  Timer1.Enabled:=False;
  end
else
 begin
  Timer1.Enabled:=False;
 end;
end;

procedure TForm1.Gas2Click(Sender: TObject);
begin
if Gas2.Caption='Gas'
 then
  begin
  Timer2.Enabled:=True;
  Gas2.Caption:='Gas s';
  end
else
  begin
  Timer2.Enabled:=False;
  Gas2.Caption:='Gas';
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer2.Enabled=True
 then
  begin
  Timer2.Enabled:=False;
  end
else
 begin
  Timer2.Enabled:=true;
 end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if Timer2.Enabled=True
 then
  begin
  Hummer.Top:=Hummer.Top + 1;
  end
else
  begin
  Hummer.Top:=Hummer.Top + 0;
  end;

if Hummer.top>form1.height
 then
  begin
  Hummer.top:=0;
  Hummer.top:=Hummer.Top + 1;
  end
else
  begin
  Hummer.top:=Hummer.Top + 0;
  end;
end;

procedure TForm1.LinksClick(Sender: TObject);
begin
if Links.Caption='Links'
 then
  begin
  Timer3.Enabled:=True;
  Links.Caption:='Links 1';
  end
else
  begin
  Timer3.Enabled:=False;
  Links.Caption:='Links';
  end;
end;

procedure TForm1.Hummer2Click(Sender: TObject);
begin
Timer4.Enabled:=True;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
if Timer4.Enabled=True
 then
  begin
  Hummer2.Top:=Hummer2.Top + 1;
  end
else
  begin
  Hummer2.Top:=Hummer2.Top + 0;
  end;

if Hummer2.top>form1.height
 then
  begin
  Hummer2.top:=0;
  Hummer2.top:=Hummer2.Top + 1;
  end
else
  begin
  Hummer2.top:=Hummer2.Top + 0;
  end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
if Timer3.Enabled=True
 then
  begin
  F430.Top:=F430.Top - 10;
  F430.Left:=F430.Left +5;
  end
else
  begin
  F430.Left:=F430.Left+ 0;
  Timer3.Enabled:=False;
  end;
end;

end.




mfg delphianer5

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler verschoben am So 07.03.2010 um 17:35
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von delphianer5 am So 07.03.10 23:20, insgesamt 1-mal bearbeitet
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 06.03.10 17:31 
Hi :)

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Ich will das wenn das Bild oben auf dem Fenster herauswandert unten wieder herauskommt.Ich will das mit einer if-Anweisung lösen, also if Bild.Left>form1."...".
Das Problem ist das ich nicht weiß was ich bei form1."..." hinschreiben soll.Wenn es rechts rauswandert heißt ja width nur wie wenns oben rauswandert?
Die Integervariablen in einem TRect(Rechteck) heißten Left, Top, RIght und Bottom; bzw. statt Right und Bottom manchmal auch Width und Height. Das Konzept taucht häufiger auf =)

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Problem 2 und das ist das größere Problem.

Ich hab das Projekt geschrieben und es funktioniert teilweise.Die Bilder wandern so wie ich will nur sie fangen direkt an zu wandern,wenn die exe geöffnet wird,das sollen sie aber nicht.Habe dan Tex auf Buttons programmiert und sie sollten erst bei klick ausgelöst werden tun sie aber nicht.

Kein Problem, stelle einfach im Object Inspector des Timers auf dem Formular die Eigenschaft Enabled auf false. (Der Object Inspector ist die Leiste auf der linken Seite in der Grafikansicht(<>Quelltextansicht), wo du die Eigenschaften der festen Formularkomponenten einstellst).
Wenn du den Timer dann starten willst, geht das per TimerName.Enabled := true;.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: Sa 06.03.10 17:34 
Hallo!
Bitte erstelle für jede Frage einen eigenen Thread - das macht dieses Foum hier wesentlich übersichtlicher! :D
Vermeide außerdem Vergleiche mit True/False; warum das so ist, wird hier erklärt: www.delphi-treff.de/...g-mit-boolean-werten
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 06.03.10 18:02 
user profile iconStundenplan hat folgendes geschrieben Zum zitierten Posting springen:
Vermeide außerdem Vergleiche mit True/False; warum das so ist, wird hier erklärt: www.delphi-treff.de/...g-mit-boolean-werten
Stimmt, das hatte ich gar nicht gemerkt.
Ein weiterer Tipp wäre, dass du nicht so streng nach jedem Schlüsselwort Umbrechen und Einrücken musst(letzteres quasi nur, wenn der folgende Codeteil in Abhängigkeit vom Ersten eventuell nicht ausgeführt wird, oder ein sogenannter Block(begin..end) ist. So einer muss aber nur folgen, wenn er auch mehrere Anweisungen zusammenfasst, also z.B. bei deinen ifs unten nicht). Eine übersichtlichere Variante könnte dann so aussehen:

ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
implementation

{$R *.dfm}

procedure TForm1.GasClick(Sender: TObject);
begin
  if Gas.Caption = 'Gas' then begin
    Timer1.Enabled := True;
    Gas.Caption := 'Gas s';
  end else begin
    Timer1.Enabled := False;
    Gas.Caption := 'Gas';
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Timer1.Enabled then
    F430.Left := F430.Left + 1;
  //else F430.Left := F430.Left + 0;  {hö? =P (verstehst du, was der Teil macht? Nach einem If muss nicht zwingend ein else folgen :))}

  if F430.Left > Form1.Width then begin
    F430.Left := 0;
    F430.Left := F430.Left + 1;
  end;
end;

procedure TForm1.BremseClick(Sender: TObject);
begin
  if Timer1.Enabled then
    Timer1.Enabled := False
  else Timer1.Enabled := False;

  //das obere ist irgendwie komisch: Warum heißt es in beiden Fällen ":= False"?
  //Wenn es von false auf true und umgekehrt gehen soll, kannst du das auch so machen:
  Timer1.Enabled := not Timer1.Enabled;
end;

procedure TForm1.Gas2Click(Sender: TObject);
begin
  if Gas2.Caption = 'Gas' then begin
    Timer2.Enabled := True;
    Gas2.Caption := 'Gas s';
  end else begin  //der zweite Teil ist glaube ich wieder unnötig, oder? Wenn Gas2.Caption = 'Gas' ist, soll sie auf 'Gas' gesetzt werden?
    Timer2.Enabled := False;
    Gas2.Caption := 'Gas';
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Timer2.Enabled then
    Timer2.Enabled:=False;
  else Timer2.Enabled:=true;

  //kürzer:
  Timer2.Enabled := not Timer2.Enabled;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if Timer2.Enabled then
    Hummer.Top := Hummer.Top + 1;
  
  if Hummer.Top > Form1.Height then begin  //hier hattest du "Height" übrigens schon drinstehen ;)
    Hummer.top := 0;
    Hummer.top := Hummer.Top + 1;
  end else Hummer.Top := Hummer.Top + 0;  //Das else ist wieder überflüssig ;);)
end;

procedure TForm1.LinksClick(Sender: TObject);
begin
  if Links.Caption = 'Links' then begin
    Timer3.Enabled:=True;
    Links.Caption:='Links 1';
  end else begin
    Timer3.Enabled:=False;
    Links.Caption:='Links';
  end;
end;

procedure TForm1.Hummer2Click(Sender: TObject);
begin
  Timer4.Enabled:=True;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
  if Timer4.Enabled then
    Hummer2.Top:=Hummer2.Top + 1
  else Hummer2.Top:=Hummer2.Top + 0;

  if Hummer2.Top > Form1.Height then begin
    Hummer2.Top:=0;
    Hummer2.Top := Hummer2.Top + 1;
  end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
  if Timer3.Enabled then begin
    F430.Top := F430.Top - 10;
    F430.Left := F430.Left +5;
  end else begin
    F430.Left := F430.Left + 0;
    Timer3.Enabled := False;
  end;
end;

end.


PS: Wenn die Zusammenfassung Timer2.Enabled := not Timer2.Enabled; nicht so einfach zu verstehen ist, einfach nochmal nachfragen! :zwinker:

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 07.03.10 17:24 
Entschuldigung, dieser Teil kann doch so gar nicht ausgeführt werden, wenn der Timer gar nicht an ist und die Procedure nur von diesem aufgerufen wird - und ich habe nirgendwo gesehen, dass sie extra mit Timer2.OnTimer aufgerufen wird (oder habe ich das nur übersehen?):
(in TForm1.Timer2Timer(Sender: TObject);):
ausblenden Delphi-Quelltext
1:
2:
  if Timer2.Enabled then
    Hummer.Top := Hummer.Top + 1;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 07.03.10 18:35 
Moin!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]
Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
delphianer5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: So 07.03.10 19:21 
Danke für die schnelle und ausführliche Beantwortung meiner Fragen.

@Hidden:Danke.Ja jetzt wo du es sagst,hätte ich von alleine drauf kommen können^^.
Ich hab nur ein weiteres Problem.Das Bild wandert heraus aber es erscheint nicht unten.Wo ist der Fehler?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if Hummer2.top>form1.Top
 then
  begin
  Hummer2.top:=650;
  Hummer2.Left:=70;
  Hummer2.top:=Hummer2.Top - 1;
  end
else
  begin
  Hummer2.top:=Hummer2.Top + 0;
  end;

Ach ja stimmt,die Timer werden ja standardmäßig auf true gestellt,Danke für den Hinweis!
Ich werde in Zukunft nicht mehr so streng einrücken,danke für den Tipp!

@Stundenplan:Ja ich wollte an meinem ersten Tag im Forum nicht gleich mit 2 Threads das ganze Forum zu spammen,noch dazu das es ja eig. sich alles auf das selbe Thema bezieht.

Ich habs mir durchgelesen,danke an alle für die Tipps wie ich meinen ich nenns mal "Schreibstil" verbessern kann,lerne Info erst seit dem Sommer 2 Stunden pro Woche und bin sehr dankbar für solche wertvollen Tipps.

@ffgorcky:
Doch, der Teil wird ausgeführt und funktioniert so wie ich es möchte oder habe ich dich falsch verstanden?

@Narses:
Ja ok,ist nicht das erste Forum das ich nutze nur wie so oft findet man nicht eine gute Überschrift,da ich das Thema nicht so gut differenzieren konnte.Außerdem wollte ich wohl eher unbewusst mit einem allgemeinem Betreff möglichst viele Leute hier ansprechen die mir dann helfen.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 07.03.10 21:08 
user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@Hidden:Danke.Ja jetzt wo du es sagst,hätte ich von alleine drauf kommen können^^.
Ich hab nur ein weiteres Problem.Das Bild wandert heraus aber es erscheint nicht unten.Wo ist der Fehler?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if Hummer2.top>form1.Top
 then
  begin
  Hummer2.top:=650;
  Hummer2.Left:=70;
  Hummer2.top:=Hummer2.Top - 1;
  end
else
  begin
  Hummer2.top:=Hummer2.Top + 0;
  end;
Du verschiebst das Bild um ein Pixel zurück, wenn es schon raus ist. dann ist es wieder drin, wandert beim nächsten TImer also wieder raus, dann wider ein Pixel rein.. Setze mal .Top auf 0, wenn das Bild raus ist.
Eine andere Möglichkeit ist, dass du das Bild um einen Betrag aus einer Variable multiplizierst, und diese dann negierst, sodass der Hummer sich in die andere Richtung bewegt(Hummer.Top := Hummer.Top + HummerTempo; if Hummer.Top > Form1. Height then HummerTempo := -Hummertempo;).

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Ich werde in Zukunft nicht mehr so streng einrücken,danke für den Tipp!
Tja, streng einrücken(dich also an die "Regeln" halten), solltest du schon weiter, das war vielleicht ein bisschen unglücklich formuliert. :gruebel: Nur die Regelformulierung, wann also eingerückt werden sollte, kannst du verbessern. Wie, habe ich oben beschrieben.
(Wenn du es nicht streng, das heißt inkonsistent machst, ist das für manche Lehrer glaube ich Benotungskriterium). So, wie ich es vorgeschlagen habe, passt es glaube ich zum offiziellen Styleguide, da kann man dann nichts für abziehen.

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@Stundenplan:Ja ich wollte an meinem ersten Tag im Forum nicht gleich mit 2 Threads das ganze Forum zu spammen,noch dazu das es ja eig. sich alles auf das selbe Thema bezieht.

Joar, wir wollen hier aber ruhig mehrere Threads. Trennbare Fragen sollten auch getrennt werden, so als Maßregel.

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habs mir durchgelesen,danke an alle für die Tipps wie ich meinen ich nenns mal "Schreibstil" verbessern kann,lerne Info erst seit dem Sommer 2 Stunden pro Woche und bin sehr dankbar für solche wertvollen Tipps.
Bin selber noch Schüler in der 13, lernt man mit dem Forum aber eigentlich ganz gut(besonders aus Problemen anderer).

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@ffgorcky: Doch, der Teil wird ausgeführt und funktioniert so wie ich es möchte oder habe ich dich falsch verstanden?
user profile iconffgorcky meinte, dass die Prozedur nur aufgerufen wird, wenn der Timer auch läuft. Damit kommt deine if-Abfrage immer nur in die erste Verzweigung, nie in die Zweite.
Deine else-Teile kannst du dir eben an vielen Stellen sparen, insbesondere dort wo sie nichts machen(else: +0 :P).

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@Narses:
Ja ok,ist nicht das erste Forum das ich nutze nur wie so oft findet man nicht eine gute Überschrift,da ich das Thema nicht so gut differenzieren konnte.Außerdem wollte ich wohl eher unbewusst mit einem allgemeinem Betreff möglichst viele Leute hier ansprechen die mir dann helfen.

Denk' mal ein wenig nach. Um auf "Bilder über die Form bewegen" zu kommen, braucht es nun wirklich keinen 2. Abschluss :beer:

lg,

PS: Änder mal den Titel, sonst kommt bald die 2. Aufforderung ;)

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
delphianer5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: So 07.03.10 23:31 
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Du verschiebst das Bild um ein Pixel zurück, wenn es schon raus ist. dann ist es wieder drin, wandert beim nächsten TImer also wieder raus, dann wider ein Pixel rein.. Setze mal .Top auf 0, wenn das Bild raus ist.
Eine andere Möglichkeit ist, dass du das Bild um einen Betrag aus einer Variable multiplizierst, und diese dann negierst, sodass der Hummer sich in die andere Richtung bewegt(Hummer.Top := Hummer.Top + HummerTempo; if Hummer.Top > Form1. Height then HummerTempo := -Hummertempo;).

hä?^^
Hab das nicht so wirklich ganz verstanden.Kannst du mir nen passenden Quellcode zu dem Teil schreiben den ich mit copy+paste einfügen kann und die Erklärung dadran veranschaulichen?

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconffgorcky meinte, dass die Prozedur nur aufgerufen wird, wenn der Timer auch läuft. Damit kommt deine if-Abfrage immer nur in die erste Verzweigung, nie in die Zweite.
Deine else-Teile kannst du dir eben an vielen Stellen sparen, insbesondere dort wo sie nichts machen(else: +0 :P).

Achso,ich dachte immer es muss was bei "else" stehen.

Moderiert von user profile iconNarses: Zitate repariert und gekürzt.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 07.03.10 23:46 
user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Achso,ich dachte immer es muss was bei "else" stehen.
Psst ;) Du darfst da auch ruhig mal drüberschauen, selbst wenn es sich um Quelltext handelt, der für dich im Moment ventuell noch etwas schwerer zu lesen ist.^^
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Timer1.Enabled then
    F430.Left := F430.Left + 1;
  //else F430.Left := F430.Left + 0;  {hö? =P (verstehst du, was der Teil macht? Nach einem If muss nicht zwingend ein else folgen :))}

  if F430.Left > Form1.Width then begin
    F430.Left := 0;
    F430.Left := F430.Left + 1;
  end;
end;

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Mo 08.03.10 21:53 
user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Wo ist der Fehler?
ausblenden Delphi-Quelltext
1:
if Hummer2.top<form1.Top					

Also ich denke mal, dass Du dort eher if Hummer2.top<0 machen möchtest, um zu sehen, ob Deine Komponente schon den oberen Rand erreicht hat. - So wie Du es geschrieben hast, guckt das Programm ja, wie weit es von dem oberen Bildschirmrand entfernt ist und wenn der Hummer2 von Deiner Titelleiste des Programms den gleichen Abstand hat, dann ist diese schon nicht mehr erfüllt.
- Noch besser fände ich dann alerdings, wenn Du das dann abbrichst, wenn der Hummer2 komplett nach oben rausgewandert ist - also so:
ausblenden Delphi-Quelltext
1:
if (Hummer2.top<(form1.Top-Hummer2.Height)) then;					


PS: Zu user profile iconHiddens komischem Quelltext mit dem if Timer1.Enabled then:
Das mit der Abfrage in dem Timer-Event, ob der Timer denn überhaupt an ist bringt nur dann etwas, wenn Du diese Procedure von einer anderen Procedure aus aufrufst, oder sie auch als OnClick-Ereignis oder so etwas deklarierst.

- Aber da solltest Du zu Anfang lieber nicht schon drauf eingehen, sondern Dich lieber erst mal um das wesentliche kümmern. - Das verwirrt sonst evtl. noch zu Anfang, wenn man zu viele Einzelheiten beachtet.
delphianer5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mo 08.03.10 23:44 
@Hidden:
Der Teil macht nichts,war ja so beabsichtigt,weil ich dachte es muss immer was hin.Wenn ich weiter drüber nachdenke ist das aber wirklich nicht zwingend notwendig.Danke für die Aufklärung!^^

@ffgorcky:
Danke!
Jetzt erkenne ich meinen Fehler,nen bisschen verkehrt herum gedacht.
Jetzt muss ich nur noch die Variablen eingeben wo es unten herauskommen soll und es passt alles aus einem Guss.
Wenn ich bei der nächsten Programmierung bei dem Programm keine Probleme hab und es damit fertig ist,speichere ich ab und überarbeite meinen Quellcode.

^^Erinnert mich an Mathe,Lehrer diktiert alles, man denkt nur "Bahnhof" und wenn man es dann Schritt für Schritt selektiert ist es gar nicht mehr so schwer.