Borland Delphi

  • da sollte ein großes U rein, die Instanz von Uhr mit kleinem U gibts nicht.


    Aber meckert da die IDE nicht, das sollte doch gar nicht compilierbar sein :?: (oder ist Delphi nicht case-sensitive? ich hab seit Delphi 2 nicht mehr damit programmiert)

  • nee, delphi ist imho nicht CaseSensitiv.
    Was heißt denn Probleme mit der Schaltung? Haste irgendwo nen Logikfehler drinne??

  • Also wir sollen das Ampelsystem halt so programmieren, wie eine Ampel funktioniert. Wenn Ampel 1 und Ampel 3 grün sind, müssen Ampel 2 und 4 rot sein... und das immer abwechselnd im Abstand (x) Sekunden. Soweit wie ich programmiert habe, werden die Ampeln nicht richtig umgeschaltet. Während einer Sekunde schaltet die Ampel anscheinend zu oft um bzw. sie SOLL nur einmal die Farbe wechseln und nicht so oft wie möglich in jeder Sekunde die ne 5 oder 0 am Ende hat. (Sekunde 5, Sekunde 10, 15 etc...)


    Hier mal nen Screenshot zum besseren Verständnis:


  • was ist denn bei dir die Klasse "Uhr"? Greifste auf die Timer-Komponente in Delphi zu? oder liest du die Systemzeit aus?


    Also an deiner If-Abrage ist nichts offensichtlich falsch...

    Audi 100 Typ44 2,3E mit LPG (BRC Just Venturi)


    Audi Coupé 2,3E mit LPG (Autronic AL-800 Venturi)

    Einmal editiert, zuletzt von Beme ()

  • uh da fragst du mich was :D Die ganzen Objekte haben wir schon gestellt bekommen....


    Also der Wert, der bei dieUhr.warte() drin steht ist eine Millisekundenangabe. Deswegen hab ich sekunde=x benutzt, damit er alle Sekunden auswählt mit 5 bzw. 0... weiter kann ich dir die Frage gar nicht beantworten, sorry! :)


    Ist da denn eventuell einfach nur nen logischer Fehler drin? Wie würdet ihr das Ampelsystem "formulieren"?

  • klar, aber das darf ja normal nichts ausmachen...


    also ich hasse aber sowieso die ewig langen if-schleifen.. Mache dann lieber cases draus.


    Eleganter: du kannst das ganze mit "mod" (modulo-Funktion, Rest einer ganzzahligen Division) auch vereinfachen bzw. abkürzen. Ich kenn leider die genaue Delphi-Syntax nicht mehr, die Schule is schon so lange her :zwinker:


    Code
    if ((dieuhr.sekunde + 10 ) mod 10 == 0) then
    begin
    ampel3.schalteUm;
    ampel1.schalteUm;
    end;


    Ansonsten weiß ich halt jetzt zuwenig über die anderen Klassen die Du einbindest Bescheid um das alles nachvollziehen zu können...

    Audi 100 Typ44 2,3E mit LPG (BRC Just Venturi)


    Audi Coupé 2,3E mit LPG (Autronic AL-800 Venturi)

    Einmal editiert, zuletzt von Beme ()

  • richtig, da hast du vollkommen recht... Denn es ist davon auszugehen, dass das Programm mehrmals pro Sekunde die Schleife durchläuft.
    Man könnte es derart lösen:


    Audi 100 Typ44 2,3E mit LPG (BRC Just Venturi)


    Audi Coupé 2,3E mit LPG (Autronic AL-800 Venturi)

    2 Mal editiert, zuletzt von Beme ()

  • Ja, jedoch etwas anders:



    klappt. jetzt müssen die Autos nur wieder vor ihren Ampeln stehen bleiben und nicht einfach irgentwo. :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!