AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kreuzung - Timer funktioniert nicht

Ein Thema von Ghostleader · begonnen am 4. Nov 2009 · letzter Beitrag vom 12. Nov 2009
Antwort Antwort
Seite 3 von 3     123   
Ghostleader

Registriert seit: 22. Aug 2009
Ort: Hilden
116 Beiträge
 
Delphi 2010 Professional
 
#21

Re: Kreuzung - Timer funktioniert nicht

  Alt 5. Nov 2009, 14:53
Ja das ist verständlich. Nur hab ich noch nie was mit "case" und anderen Dingen gemacht. Aber danke trotzdem!
Michael
  Mit Zitat antworten Zitat
Ghostleader

Registriert seit: 22. Aug 2009
Ort: Hilden
116 Beiträge
 
Delphi 2010 Professional
 
#22

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 19:37
Folgendes Problem:
Die Ampel schalltet nicht wie sie soll sondern so:
Rot, Gelb, Gelbrot, Grün

Ich finde meinen Fehler nicht, bitte helft mir:

Delphi-Quellcode:
   
if ImAmpel1Ro.Visible = True then
    begin
      ImAmpel1Ro.Visible:= False;
      ImAmpel1Gero.Visible:= True;
    end
  else if ImAmpel1Gero.Visible = True then
    begin
      ImAmpel1Gero.Visible:= False;
      ImAmpel1Gr.Visible:= True;
    end
  else if ImAmpel1Gr.Visible = True then
    begin
      ImAmpel1Gr.Visible:= False;
      ImAmpel1Ge.Visible:= True;
    end
  else if ImAmpel1Ge.Visible = True then
    begin
      ImAmpel1Ge.Visible:= False;
      ImAmpel1Ro.Visible:= True;
    end;
Ich habe NUR noch das Problem mit der Reihenfolge und ignoriere eure Tipps auch NICHT.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#23

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 20:07
Hallo,

vielleicht auch so (siehe Anhang, *.exe und Quelldateien) ?

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Prot: TPanel;
    Pgelb: TPanel;
    Pgruen: TPanel;
    Edit1: TEdit;
    Prot2: TPanel;
    Pgelb2: TPanel;
    Pgruen2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ShowAmpel(Sender: TObject);
  private
    { Private declarations }
    phase, phase2 : Integer;
    counter : Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
counter := 0;
phase := 0;
Prot.Visible := False;
Pgelb.Visible := False;
Pgruen.Visible := False;
Prot2.Visible := False;
Pgelb2.Visible := False;
Pgruen2.Visible := False;
Edit1.Text := '';
Timer1.Enabled := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := False;
Edit1.Text := '';
Prot.Visible := False;
Pgelb.Visible := False;
Pgruen.Visible := False;
Prot2.Visible := False;
Pgelb2.Visible := False;
Pgruen2.Visible := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
counter := counter + 1; //Sekunden
 case counter of
  0..5 : phase := 1; // Rot
  6..10 : phase := 2; // Rot-Gelb
  11..15 : phase := 3; // Gruen
  16..20 : phase := 4; // Gruen
  21..25 : phase := 5; // Gelb
  26..29 : phase := 6; // Rot
  30 : begin
            phase := 6;
            counter := 0;
           end;
 end; // end case of
 if (phase + 3) > 6 then phase2 := phase -3 else phase2 := phase +3;
 Edit1.Text := 'Phase : '+IntToStr(phase);
 ShowAmpel(Self);
end;

procedure TForm1.ShowAmpel(Sender: TObject);
begin
 case phase of
  1 : begin Prot.Visible := True; end;
  2 : begin Prot.Visible := True; Pgelb.Visible := True; end;
  3 : begin Prot.Visible := False; Pgelb.Visible := False; Pgruen.Visible := True; end;
  4 : begin Prot.Visible := False; Pgelb.Visible := False; Pgruen.Visible := True; end;
  5 : begin Pgruen.Visible := False; Pgelb.Visible := True; end;
  6 : begin Pgelb.Visible := False; Prot.Visible := True; end;
 end; // end case of
 case phase2 of
  1 : begin Prot2.Visible := True; end;
  2 : begin Prot2.Visible := True; Pgelb2.Visible := True; end;
  3 : begin Prot2.Visible := False; Pgelb2.Visible := False; Pgruen2.Visible := True; end;
  4 : begin Prot2.Visible := False; Pgelb2.Visible := False; Pgruen2.Visible := True; end;
  5 : begin Pgruen2.Visible := False; Pgelb2.Visible := True; end;
  6 : begin Pgelb2.Visible := False; Prot2.Visible := True; end;
 end; // end case of
end;

end.
... ist mit Sicherheit noch optimierungsfähig (nur 'mal so eben schnell "zusammengeschustert")
Angehängte Dateien
Dateityp: rar ampel_121.rar (164,2 KB, 7x aufgerufen)
Markus H.
  Mit Zitat antworten Zitat
Ghostleader

Registriert seit: 22. Aug 2009
Ort: Hilden
116 Beiträge
 
Delphi 2010 Professional
 
#24

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 20:49
danke für deine antwort aber ich wüde gerne wissen wieso die ampel in der falschen reihenfolge schaltet... damit ich was lernen und es ändern kann.
mfg ghost
Michael
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#25

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 22:41
Zitat von Ghostleader:
Folgendes Problem:
Die Ampel schalltet nicht wie sie soll sondern so:
Rot, Gelb, Gelbrot, Grün
Hast du evtl. die Bezeichnungen vertauscht?
Achso: und bitte keinen Vergleich auf true, also bitte das so machen:
Delphi-Quellcode:
   
if ImAmpel1Ro.Visible{ = True} then
    begin
      ImAmpel1Ro.Visible:= False;
      ImAmpel1Gero.Visible:= True;
    end
  else if ImAmpel1Gero.Visible{ = True} then
    begin
      ImAmpel1Gero.Visible:= False;
      ImAmpel1Gr.Visible:= True;
    end
  else if ImAmpel1Gr.Visible{ = True} then
    begin
      ImAmpel1Gr.Visible:= False;
      ImAmpel1Ge.Visible:= True;
    end
  else if ImAmpel1Ge.Visible{ = True} then
    begin
      ImAmpel1Ge.Visible:= False;
      ImAmpel1Ro.Visible:= True;
    end;
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Ghostleader

Registriert seit: 22. Aug 2009
Ort: Hilden
116 Beiträge
 
Delphi 2010 Professional
 
#26

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 22:46
nein soweit ich das sehe habe ich nichts vertauscht
Michael
  Mit Zitat antworten Zitat
Ghostleader

Registriert seit: 22. Aug 2009
Ort: Hilden
116 Beiträge
 
Delphi 2010 Professional
 
#27

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 22:49
hat sich erledigt habe den fehler jetzt ENDLICH gefunden danke für die hilfe mfg Ghost
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Kreuzung - Timer funktioniert nicht

  Alt 7. Nov 2009, 22:53
Zitat von Ghostleader:
hat mir schonmal jemand gesagt aber:
wieso?
Zitat von Matze:
Und jetzt schreibe bitte nicht wieder du hättest alles hier genau gelesen. Wie du siehst, hast du es nicht. Klicke den Link an und lies, was dort steht, dann weißt du wieso.
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#29

Re: Kreuzung - Timer funktioniert nicht

  Alt 12. Nov 2009, 08:21
Du solltest dir vielleicht nochmal die Delphi-GRUNDlagen ansehen, bevor du loslegst.

Wir sehen ja,. dass du keine Tipps annimst und selbst nach dem X-Ten Mal noch auf True/False vergleichst!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz