- Offizieller Beitrag
Bevor ihr anfangt, solltet ihr zumindest "LUA für Anfänger" mal in groben Zügen durchlesen um einige Unterschiede zu AutoIt zu erkennen.
Ich werde Bsp. von dieser Seite hier darstellen, jede Zeile kommentiert.
Erste Schritte:
Variablendeklaration:
Wenn eine Variable nicht als "local" deklariert wurde, ist sie immer "global".
Variablennamen bestehen aus Buchstaben/Ziffern/Unterstrich
Zuweisungen:
erfolgen, wie in AutoIt, mit "=". Aber als Vergleichsoperator dient "=="!
Es gibt in LUA den Wert "nil" für "nichts". Das dient z.B. dazu Variablen zu löschen oder wird bei Fehlern ausgegeben.
Kommentare im Skript:
in einer Zeile: "--Kommentar"
mehrzeilig:
--[[ erste Zeile Kommentar
Kommentarzeile 2
Kommentarzeile 3
Kommentar Ende ]]
Text verknüpfen mit:
".." Bsp.: "Text: " .. stringvariable
Ausgabe in Konsole:
print()
Nun mal probieren - Arrays heißen hier Table:
-- Table mit Wochentagen
tage = {"Sonntag", "Montag", "Dienstag","Mittwoch", "Donnerstag", "Freitag", "Samstag"} -- Deklaration mit Zuweisung
ubound = table.getn(tage) -- getn entspricht Ubound in AutoIt
print( 'Anzahl Item in \'tage\': ' .. ubound) -- Metazeichen müssen zur Ausgabe maskiert werden
print( 'nacheinander ausgeben, generisch:' )
for zaehler, wert in pairs(tage) do
print( wert )
end
print( '\noder über Indexzugriff:' )
for zaehler in pairs(tage) do
print( tage[zaehler] )
end
Alles anzeigen
Es lassen sich Feldnamen verwenden für Zugriffe mit: Table.Feldname
-- andere Form der Zuweisung: Table mit Feldnamen
tage = {} -- Table erstellen
tage.Sonntag = 1
tage.Montag = 2
tage.Dienstag = 3
tage.Mittwoch = 4
tage.Donnerstag = 5
tage.Freitag = 6
tage.Samstag = 7
print( '\nWert eines Wochentages zurückgeben:')
print( 'Mittwoch hat Wert: ' .. tage.Mittwoch)
Alles anzeigen
Etwas ganz Tolles
Funktionen lassen sich als Array (Table)-Elemente erstellen:
-- Funktion als Element eines Table - Funktionen erhalten keinen Namen! Zur Identifikation dem Element einen Feldnamen vergeben
meinCalc = {
Addiere = function( _a, _b ) return _a + _b end,
Subtrahiere = function( _a, _b ) return _a - _b end,
Multipliziere = function( _a, _b ) return _a * _b end,
Dividiere = function( _a, _b ) return _a / _b end } -- Table erstellen
-- oder so geht es auch:
--~ meinCalc = {}
--~ meinCalc.Addiere = function( _a, _b ) return _a + _b end
--~ meinCalc.Subtrahiere = function( _a, _b ) return _a - _b end
--~ meinCalc.Multipliziere = function( _a, _b ) return _a * _b end
--~ meinCalc.Dividiere = function( _a, _b ) return _a / _b end
a = 27 b = 9
print ( 'Addition:\t' .. meinCalc.Addiere(a,b) ) --> Addition: 36
print ( 'Subtraktion:\t' .. meinCalc.Subtrahiere(a,b) ) --> Subtraktion: 18
print ( 'Multiplikation: ' .. meinCalc.Multipliziere(a,b) ) --> Multiplikation: 243
print ( 'Division:\t' .. meinCalc.Dividiere(a,b) ) --> Division: 3
Alles anzeigen
Und wie sieht es mit Makros aus?
Nun, Datum/Zeit lassen sich so ausgeben:
t = os.date ("*t")
print (t.year)
print (t.month)
print (t.day)
print (t.hour)
print (t.min)
print (t.sec)
Und zu guter letzt in diesem Beitrag - meine erste LUA-Funktion:
function germanDate( _type ) -- l=longDate("Montag, 12.September 2011"), s=shortDate("Mo, 12.Sep 2011"), N=numericLong("12.09.2011"), n=numericShort("12.09.11")
local longWochentag = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local shortWochentag = {'So','Mo','Di','Mi','Do','Fr','Sa'}
local longMon = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local shortMon = {'Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'}
local indexTag = os.date( "%w" ) +1
local indexMon = math.abs( os.date( "%m" ) )
if _type == 's' then
return os.date( shortWochentag[indexTag]..", %d."..shortMon[indexMon].." %Y" )
elseif _type == 'l' then
return os.date( longWochentag[indexTag]..", %d."..longMon[indexMon].." %Y" )
elseif _type == 'N' then
return os.date( "%d.%m.%Y" )
elseif _type == 'n' then
return os.date( "%d.%m.%y" )
end
end
print ( 'Kurzdatum mit Wochentag\t' .. germanDate('s') )
print ( 'Langdatum mit Wochentag\t' .. germanDate('l') )
print ( 'Datum numerisch lang\t' .. germanDate('N') )
print ( 'Datum numerisch kurz\t' .. germanDate('n') )
Alles anzeigen