Antworten
herbertmontie
Mitglied
Beiträge: 3
Registriert: 27.01.2020 17:59

Len$

27.01.2020 18:42

Hallo liebe Leute,

habe vor einiger Zeit bei Lua-scripting eine frage gehabt wie ich ein Zugname einlesen kann über LUA und dann ein gewissen Teil filtern kann um zb. eine Baureihe zu erkennen.

Zb. Wenn eine Lok den Namen "DB_052_177_3_v7_RG2;001" hat dann möchte ich nur den Teil "DB_052" in ein String haben.

Bei QBasic gign das damals so ungefähr:

Code: Alles auswählen

LokName$ = Len$(LokName$,1,6)
Wer kann mir weiter helfen?

LG., Herbert
Zuletzt geändert von Sharky009 am 28.01.2020 00:21, insgesamt 1-mal geändert.
Grund: Bitte Codeblöcke benutzen!

Benutzeravatar
martin51
Mitglied
Beiträge: 7
Registriert: 22.12.2019 10:15
Wohnort: Schruns
Hat sich bedankt: 5 Mal

Re: Len$

27.01.2020 19:56

Hallo Herbert,

das gibt es als Hilfe in deutsch.

Code: Alles auswählen

string.sub(s,i[,j])
Liefert eine Teil-Zeichenkette von s, welche sich von i bis j erstreckt; i und j können negativ sein. Falls j nicht angegeben wird, wird es als -1 angenommen (was das Gleiche wie die Länge der Zeichenkette ist). Im Speziellen liefert der Aufruf string.sub(s,1,j) ein Präfix von s der Länge j und string.sub(s,-i) liefert ein Suffix von s mit der Länge i.

siehe hier: [External Link Removed for Guests]

Gruß Martin
Zuletzt geändert von Sharky009 am 28.01.2020 00:21, insgesamt 1-mal geändert.
Grund: Bitte Codeblöcke benutzen!
Wortmann Terra: Intel® Core™ i7-8700K CPU 3.7GHz, RAM 32GB, GIGA NVIDIA GTX 1080 Ti 11GB, SSD 256GB, HD 3TB, Windows 10 Pro 64 Bit 1809

EEP12 u. EEP13.2 Expert Patch2 + Plugin1,2, EEP14.1 Expert Patch2,Plugin 1,EEP15.1 Expert Patch 2,Plugin 1,EEP16.1 Patch 3

herbertmontie
Mitglied
Beiträge: 3
Registriert: 27.01.2020 17:59

Re: Len$

27.01.2020 20:13

Danke, werde es mal ausprobieren ;)

Benutzeravatar
martin51
Mitglied
Beiträge: 7
Registriert: 22.12.2019 10:15
Wohnort: Schruns
Hat sich bedankt: 5 Mal

Re: Len$

27.01.2020 20:31

Hallo Herbert,

eine Ergänzung dazu-

Man kann Variablen einen beliebigen Namen geben. Der darf aus einem einzelnen Buchstaben bestehen oder
ein ganzes Wort sein. Aber der Name darf nur aus Buchstaben, Ziffern und dem Unterstrich bestehen. Und er
darf nicht mit einer Ziffer beginnen.

d.h. kein $-Zeichen

Code: Alles auswählen

-- string.sub(s,i[,j])

LokName = "DB_052_177_3_v7_RG2;001"

print(string.sub(LokName,1,6))
gibt als Ausgabe

DB_052

so funktioniert es.

Gruß Martin
Zuletzt geändert von Sharky009 am 28.01.2020 00:22, insgesamt 1-mal geändert.
Grund: Bitte Codeblöcke benutzen!
Wortmann Terra: Intel® Core™ i7-8700K CPU 3.7GHz, RAM 32GB, GIGA NVIDIA GTX 1080 Ti 11GB, SSD 256GB, HD 3TB, Windows 10 Pro 64 Bit 1809

EEP12 u. EEP13.2 Expert Patch2 + Plugin1,2, EEP14.1 Expert Patch2,Plugin 1,EEP15.1 Expert Patch 2,Plugin 1,EEP16.1 Patch 3

herbertmontie
Mitglied
Beiträge: 3
Registriert: 27.01.2020 17:59

Re: Len$

27.01.2020 22:23

Hallo Martin,

Beim überfahren eines Kontaktpunkt wird der Zugname eingelesen, später der Strassenbahn-name oder Linie um weichen etc zu steuern :relaxed:

Hier ist das Ergebnis:
Script:

Code: Alles auswählen

function GibTramName(LokName)
    print("LokName ist: ", LokName)
    LokName = string.sub(LokName,2,7)
--    TramName = string.sub(TramName,2,26)
    print("LokName ist: ", LokName)
end
Ausgabefenster:
LokName ist: #DB_052_177_3_v7_RG2
LokName ist: DB_052

Vielen dank Martin
Grüsse Herbert
Zuletzt geändert von Sharky009 am 28.01.2020 00:22, insgesamt 1-mal geändert.
Grund: Bitte Codeblöcke benutzen!

Antworten