Autor Beitrag
minipliman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: So 04.12.05 15:49 
hallo!
weiß nich genau obs das richtige unter forum is, egal.
suchfunktion hab ich auch benutzt aber da hab ich nur ampeln mit timer gefunden
ich muss ne ampel in delphi programmieren mit gettickount. mit timer hab ichs jetzt schon n bsp gefunden und auch verstanden aber mit gettickcount bekomm ichs einfach nich hin, vtl hat einer dat ja schon programmiert und kann mir den quelltext mal hochladen oder zumindest den programmieransatz geben.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 15:56 
wenn du weisst was gettickcount macht dann sollte es doch nicht so schwer sein denn einen fertigen quelltext wird dir hier niemand geben... oder poste deinen versuch und wir sagen dir was falsch ist...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
minipliman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: So 04.12.05 16:11 
dat bringt nich viel wenn ich meins jetzt hier poste weil mir komplett der ansatz fehlt.

also ich bin jetzt soweit das ich wenn ich den knopf drücke immer die nächste ampelphase angeschaltet wird. wie muss ich dat jetzt ändern so das ich wenn ich den knopf einmal drücke automatisch alle ampelphasen nacheinenander ablaufen?
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 16:18 
ne schleife und dabei nen delay mit hilfe von gettickcount. dazu geistern viele quellcodes hier im forum rum. ist eigentlich sowas wie sleep nur eben mit gettickcount. ob dabei das programm steuerbar bleibt weiss ich nicht weshalb ich für sowas nen timer oder nen eigenen thread bevorzugen würde...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 04.12.05 16:36 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
AktTime := GetTickCount;
while GetTickCount - AktTime < 2000 do     // 2000 = 2 Sekunden
  Application.ProcessMessages;

// Schalte auf Rot...

So reagiert das Programm auch weiterhin.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
minipliman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: So 04.12.05 18:20 
also ich habs jetzt soweit fertich (schleife hab ich noch nich gemacht aber das sollte ja hinuzubekommen sein.

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:
procedure TForm1.Button1Click(Sender: TObject);
 begin
  AktTime := GetTickCount;
  while GetTickCount - AktTime < 2000 do     // 2000 = 2 Sekunden
  Application.ProcessMessages;
   begin
    Shape4.Brush.Color := clred;
    Shape5.Brush.Color := clblack;
    Shape6.Brush.Color := clblack;
   end;

  AktTime := GetTickCount;
  while GetTickCount - AktTime < 2000 do     // 2000 = 2 Sekunden
  Application.ProcessMessages;
   begin
    Shape4.Brush.Color := clred;
    Shape5.Brush.Color := clyellow;
    Shape6.Brush.Color := clblack;
   end;
  AktTime := GetTickCount;
  while GetTickCount - AktTime < 2000 do     // 2000 = 2 Sekunden
  Application.ProcessMessages;
   begin
    Shape4.Brush.Color := clblack;
    Shape5.Brush.Color := clblack;
    Shape6.Brush.Color := clgreen;
   end;
  AktTime := GetTickCount;
  while GetTickCount - AktTime < 2000 do     // 2000 = 2 Sekunden
  Application.ProcessMessages;
   begin
    Shape4.Brush.Color := clblack;
    Shape5.Brush.Color := clyellow;
    Shape6.Brush.Color := clblack;
   end;
 end;


eine frage jetzt noch wie bekomm ich das jetzt hin das ich auch wärend der ampelphase das programm beenden kann?

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 04.12.05 18:36 
Copy und Paste -_-

Normal müsstest du das Programm normal beenden können.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 18:45 
pack das ganze in unterschiedliche prozeduren und funktionen.
mach zum beispiel eine prozedure zum ändern der farben. den status kann man so definieren:
tstatus=(gruen,gelb,rot,gelbrot);
den status übergibst du als parameter und in der procedure machst du ne case anweisung.
dann machste den gettickcount kram in ne eigene procedure und übergibst die zeit als parameter.
den parameter kannste auch weglassen oder machst es als konstante irgendwo anders im programm.
am besten schreibste das ganze als eigene klasse in ne extra unit dann kann mans immmer wieder in verschiedenen programmen nutzen ohne immer 10 millionen variablen etc zu deklarieren... hab ich auch gemacht und wenn man sich ein wenig mit oop beschäftigt und hier im forum das ein oder andere nachfragt bekommt man eine sehr schöne klasse tampel die man in späteren programmen wie irgendwelchen spielchen oder so verwenden kann...
das mit dem oop ist nur nen vorschlag aber deine procedure solltest du wirklich splitten und ein wenig optimieren...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
minipliman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: So 04.12.05 19:02 
hatt ich schon erwähnt das ich nich viel ahnung von delphi hab und ne möglichst EINFACHE lösung brauche?
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 19:12 
dann solltest du dir wohl besser diese links anschauen:
Crashkurs Delphi
und
Delphi Source
und
Delphi Basics für diverse Befehle
denn so wie du das gepostet hast sieht es für nen anfänger einfach aus. alles schön in die procedure geklatscht und gut ist. aber ich unterstell dir mal dass du delphi lernen willst. daraus folgt auch, dass du mit der zeit komplexere programme schreiben wirst. und dann wirst du um oop und klassen und eigene proceduren nicht mehr rum kommen.
deshalb bietet es sich an sowas schon an einfachen beispielen zu üben. deswegen guck dir zunächst den crashkurs delphi oben an. da lernst du die grundlagen. und das solltest du dann auch anwenden.
denn es wird sich als nützlich erweisen wenn man weiss wie das geht. denn mit oop findet man später auch fehler schneller. wenn ich einfach mal alles in ne procedure packe und teste kommen nachhher tausende von fehlern und man weiss nicht wo man anfangen soll und man postet schluss endlich wieder hier wo die erfahrenen user den quelltext entweder nicht angucken weil er nicht strukturiert ist oder sehr viel zeit investieren müssen um durchzusehen.
lernst du aber gleich wie man alles richtig strukturiert und wenig oder gar keine globale variablen verwendet wird das nicht nur uns die arbeit erleichtern.
wenn du dann ein programm erstellst, testest du procedure für procedure. du kannst jede procedure einem eigenen button zuweisen und dann besser testen bei welcher procedure ein fehler auftaucht und was für einer etc pp.
glaub mir es ist besser sich sowas anzueignen und nicht einfach versucht das programm fertig zu bekommen (habe ich am anfang auch immer so gemacht bis alles komplexer wurde).
also mein ratschlag: guck dir den crash kurs an und versuch es auf triviale programme wie deine ampel anzuwenden.

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
minipliman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: So 04.12.05 19:30 
dazu muss ich vieleicht auch noch sagen das ichs morgen abgeben muss.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 19:41 
ja dann gibs so ab aber es geht ja auch um den lerneffekt....
kannst es ja morgen oder so immernoch verbessern um es zu lernen ... heißt ja net dass du es mit oop abgeben sollst

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700