Hilfe: Kleine Fragen beim Scripten

  • Hallo,


    Ich habe ein Problem. Bei der Programmierung meiner U-Bahn, mit genau 40 Türen, dachte ich mir, dass ich eine Funktion erstelle. Damit das script halt nicht ganz unübersichtlich wird. Nur krieg ich das irgendwie nicht hin und das Content-Tool wirft mir alle möglichen Fehlermeldungen entgegen, damit ich es ja nur nicht schaffe.


    Kann mir vielleicht irgendwer helfen was beim Script nicht funktioniert, ich bin da bei funktionen in Pascal noch nicht so gewohnt.


    Hier die notwendigen Teile des scripts (Für die Tür L1)


    Code: TypV_Main.pas
    1. {PUBLIC_VARS
    2. ...
    3. Door_L1_pos_x: single;
    4. Door_L1_pos_y: single;
    5. ...
    6. CP_TasteDIR_Door_L1: single;
    7. ...
    8. DoorL1: single;
    9. ...

    Am Ende kommt auch noch das Schließen der Türe, aber da habe ich mich bei der Funktion/Prozedur noch nicht probiert.

    (Falls Script-stücke fehlen, einfach bescheid sagen)


    Kann mir da jemand helfen?

  • Der aktuelle ist: [Error] Tueren.pas(141:23): comma (',') expected

    Nur passt da ein komma irgendwie garnicht hin und wenn ichs doch hinmache, kommt [Error] Tueren.pas(141:12): Unknown identifier 'Door_'

    Bisschen habe ich das gefühl der gibt mir einfach willkürlich Fehlermeldungen...


    Übrigens, Zeile 141 ist diese:

    Code: Tueren.pas
    1. // Türe L1
    2. if ((DoorLAll = 1) or ((DoorL = 1) and (DoorL1 = 1))) then
    3. begin
    4. DoorOpen(Door_,L1_pos; Door_L1_pos_x; Door_L1_pos_y);
    5. end;
  • Die Position des Kommas ist falsch.

    Code
    1. DoorOpen(Door_L1_pos, Door_L1_pos_x, Door_L1_pos_y);

    so könnte es funktionieren. Die Variablen werden bei der Deklaration durch Semikola getrennt, beim Funktionsaufruf durch Kommata.

  • Jetzt wiederum spuckt er mir folgenden Fehler aus: [Error] Tueren.pas(141:47): Variable expected

    Die Variable Door_L1_pos_y habe ich aber wie die anderen beide ja auch deklariert?/

  • Du übergibst "Door_L1_pos_y" als "var"-Variable. Das geht leider nicht, weil erstere als Public-Variable deklariert ist. Diese wird intern anders behandelt (ist mehr so eine Art "Übergabe-Information").

  • Nein. Du benötigst eine lokale "Zusatzvariable", die du der Prozedur gibst. Die wird oben mit "var" deklariert, also so, wie Door_L1_pos. Dann könnte es so aussehen:


    Code
    1. var
    2. tempx, tempy: single;
    3. ...
    4. DoorOpen(Door_L1_pos, tempx, tempy);
    5. Door_L1_pos_x := tempx;
    6. Door_L1_pos_y := tempy;
  • Fabian13

    Hat den Titel des Themas von „Hilfe: Funktion/Prozedur mit Variablen“ zu „Hilfe: Kleine Fragen beim Scripten“ geändert.
  • Also, jetzt hab ichs getestet und es funktioniert, vielen Dank:)


    -------------------------------------


    Jetzt habe ich da noch eine kleine Frage:


    Ich wollte mir mal eine provisorische LZB scripten, nur muss ich da auslesen wie viele Meter die Bahn die ganze Zeit fährt. Warum: Ich wollte eine Variable machen, wo immer steht wie viele Meter es noch sind. Der erste Wert wird von einer speziellen FIS-Datei vorgegeben und dann wird diegefahrene Strecke davon abgezogen. Nur, wie lese ich am besten die gefahrene Strecke ab?

  • Du kennst den Timegap (also wieviel Zeit seit der letzten Berechnung verstrichen ist), du kennst die Geschwindigkeit des Fahrzeuges... die daraus resultierende Formel überlasse ich dir! ;)

  • Ich schreibs einfach hier wieder rein, ich glaube das passt hier recht gut.


    Ich wollte mir jetzt für mein IBISeine Uhrzeit basteln als String-Variable. Das problem ist nur, die TimeOfDay wird als Single ausgegeben und ich weiss nicht, wie ich diese zu einem String umwandeln kann. Geschafft habe ich, nach einigem probieren und suchen im internet nur von einer integer zum String, nur spielt die Uhrzeit dann verrückt. (TimeOfDay: integer;)


    Hier ist mal mein jetziger code (Ich weiss, die Berechnungen zur Uhrzeit stimmen noch nicht, ist erstmal nur zu Testzwecken)


  • Die Herangehensweise ist grundsätzlich richtig, aber Du hast übersehen, dass eine "menschenlesbare" Uhrzeit ja immer die Minuten anzeigt, die zu den ganzen Stunden hinzugerechnet werden müssen! In Deinem Fall gibst du aber die Minuten (und Sekunden) seit Tagesbeginn an, was ziemlich große Zahlen sind! ;-) Außerdem muss "TimeOfDay" als Single deklariert werden und deshalb auch gerundet werden.


    Daher muss wie folgt berechnet werden:


  • Vielen dank, es hat funktioniert. Jetzt muss ich nur noch fragen wenn ich schon dabei bin, welche variable gibt mir an welcher Tag es ist. (Als bspw. 17 Juli 2019 oder 17.7.2019 oder was auch sonst es ist)

  • Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

    Die letzte Antwort auf dieses Thema liegt mehr als 60 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstellen Sie ggf. ein neues Thema.

    Maximale Anzahl an Dateianhängen: 5
    Maximale Dateigröße: 500 kB
    Erlaubte Dateiendungen: bmp, cfg, ini, jpeg, jpg, lct, ldl, llg, lob, log, lpmtl, lptmt, ltx, pas, pdf, png, railtrack, rar, txt, veh, wav