[Release]All-In-One Guide für Python Einsteiger

10/13/2014 01:15 .He3o Copy™#1
Inhaltsverzeichnis:

1. Einleitung
2. Allgemeine Grundlagen
2.1. Klassen
2.2. Datentypen
2.3. Methoden
2.4. Verzweigungen
2.5. Schleifen
2.6. Vererbung
3. Grafische Benutzeroberfläche mit den Klassen aus der UI
4. Interaktion mit Lua(Quests)
5. Algorithmische Aufgaben



1. Einleitung

Guten Tag, liebe Community.
Im folgenden All-In One Guide möchte ich euch den Pythongebrauch in Metin2 etwas näher bringen.
Da ich bisher noch kein detailliertes Guide gefunden habe und viele Epvper nur Ansätze erklären, dabei jedoch die relevanten Begriffe meist weglassen, wollte ich das alles mal in einem großen Thread zusammenbringen. Da das mein erster Release-Thread ist habe ich mir gedacht: "Da mach ich wenigstens etwas brauchbares."
Eine kleine Voraussetzung gebe ich jetzt einfach mal vor: Ihr sollten mit den Begriffen "Operatoren" und "Variablen" etwas anfangen können.
Also Let's go !!



2. Allgemeine Grundlagen


Im ersten Teil meiner Guide-Serie möchte ich euch zunächst die Grundlagen von Python erklären.
Ohne diese Grundlagen werdet ihr vermutlich die weiteren Erklärungen nicht verstehen können.
Fangen wir mal an:
Python ist eine universelle, höhere Programmiersprache, die versucht durch einen neuen Syntax den eigentlichen Code zu verkürzen und die Programmstruktur somit
verständlicher und übersichtlicher zu machen (wie z.B. durch den Verzicht von Klammern zur Bildung von Codeteilen).
Klären wir erstmal den Begriff "Programmiersprache" und damit auch objektorientierte Programmierung.
Wenn wir uns mal den ISO Standard anschauen heißt es dort : "Bezieht sich auf eine Technik oder Programmiersprache, welche Objekte, Klassen und Vererbung unterstützt.".
Das bedeutet es gibt einmal Sprachen die diese Technik nicht unterstützen, die sogenannten Scriptspachen, und einmal die Programmiersprachen.
Eine Programmiersprache zieht es also vor alle Sachen in Strukturen zu unterteilen.
Machen wir ein Beispiel.
Stellen wir uns mal vor wir haben nun ein Auto vor uns, das ist nun unsere Superklasse oder Basisklasse.
Nun unterteilen wir wiederum dieses Auto in kleinere Elemente in die sogenannten Unterklassen also z.B. Tür, Reifen, Motor.
Wenn wir jetzt noch den Begriff Vererbung ins Spiel bringen wollen sehen wir einfach mal Motor als sogenannten Oberklasse an. Die Oberklasse unterteilen wir jetzt in die Unterklassen "Ottomotor" und "Dieselmotor", so erben die zwei Unterklassen
die grundlegenden Eigenschaften von der Oberklasse "Motor" aber haben in ihrer Klasse selbst dann zusätzliche andere Eigenschaften. Das kann man auch auf das echte Leben übertragen, als Beispiel nehmen wir wieder unsere Motoren einmal der Ottomotor wo das Benzin sofort verbrannt wird um die Energie zu gewinnen und
einmal der Dieselmotor wo zunächst viel Druck nötigt ist das man die Kohlenwasserstoffe zu Energiegewinnung nutzen kann.
Also haben wir eine Klasse die wiederum aus anderen Klassen besteht. Einfach gesagt für die Klasse Auto brauchen wir aber auch die Klassen Motor, Türen, Fenster, Sitze und so weiter.
Was ist aber jetzt ein Objekt.
Ein Objekt ist ein bestimmtes Auto was durch Klasse Auto erstellt wurde.




2.1. Klassen

Jetzt wissen wir was eine Klasse ist aber wie genau sieht sie nun aus?
Schauen wir uns das an einem konkreten Beispiel einmal an.
Natürlich in einer sehr vereinfachten Form:


PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
    
    def __del__
(self):
        
pass
        
#this is a Destruktor 
Zunächst haben wir die Klasse Auto durch den Befehl "class Auto" definiert.
Im nächsten Schritt werden wir nun ein Objekt der Klasse erstellen.

PHP Code:
objekt Auto("Bugatti",1000000000
Jetzt ist "objekt" ein Objekt der Klasse Auto. In dem Moment wo wir "Auto()" aufrufen wird automatisch die Built-In Methode __init__ aufgerufen also der sogenannte Konstruktor und durch die Parameter oder Übergabewerte werden dann die Variablen des Objekts initialisiert.
Desweitern gibt es noch die Methode __del__ die ebenfalls automatisch aufgerufen wird sobald man das Objekt mit "del Objekt" wieder löschen möchte als der sogenannte Destruktor. Nochmal zusammengefasst wir haben hier zwei Methoden, die aufgerufen werden wenn wir ein Objekt erzeugen(Konstruktur also __init__) oder auflösen(Destruktor also __del__) möchten.
Zusätzlich können Konstruktoren mit Parametern versehen werden, wobei diese nicht jedesmal gesetzt werden müssen, dass sehen wir an dem Beispiel von der Preis Variable.
Diese ist automatisch gesetzt, muss aber nicht im Konstruktoraufruf extra gesetzt werden (im weiteren Verlauf der Serie werde ich dazu noch sinnvolle Beispiele machen).
Viele von euch werden sich nun verständlicherweise fragen was diese "self" bedeutet.
Das "self" kann man mit dem "this" aus Java und C++ vergleichen es legt lediglich eine Referenz auf das Objekt, das bedeutet durch dieses "self" weiß der Methodenaufruf zu welchem Objekt es gehört und auf welches Objekt diese Methode angewendet werden soll.



2.2. Datentypen


Fangen wir mal ganz einfach an nämlich mit dem Nichts.
PHP Code:
Summe None 
Dieses "None" repräsentiert das Nichts und wird oft bei mathematischen Berechnungen verwendet wo z.B. alle komplexen Zahlen eine Lösung ergeben aber es auch sein kann wenn man durch 0 teilt das keine Lösung möglich ist und was gibt es einfacheres als das Nichts?
Da wir bereits wissen was Operatoren sind gehen wir gleich über zu den nummerischen Datentypen.


Nummerische Datentypen

Ganzzahlen

PHP Code:
var_int 235235
var_long 
12345983128973279823987523L 
Wenn man eine ganze Zahl initialisieren möchte nimmt man vorzugsweise ein normales "int", da sollte man jedoch drauf achten das "int" ein begrenzten Zahlenraum hat (was wir bei "long" nicht haben).
Möchten wir also eine sehr große Zahl initialisieren sollten wir das "long" benutzen das am Ende mit einem "L" gekennzeichnet wird.


Gleitkommazahlen

Hier halte ich mich ganz kurz, da es eigentlich nur ein "float" gibt das man so definiert:
PHP Code:
var_float1337.2424 
Wenn wir gerne mit Potenzen und Exponenten arbeiten möchten ist das kein Problem. Genau wie bei einem Taschenrechner wird einfach ein e-1133 drangehängt.

Boolesche Werte

Oder auch einfach "bool" hier unterscheiden wir lediglich zwischen Richtig und Falsch oder Wahr und Unwahr.
PHP Code:
var_bool True
var_bool 
False 
Sequenzielle Datentypen

Diese Datentypen können Elemente mit einer definierten Reihenfolge verwalten und indizieren.

Tuple - tuple

Dies ist eine Liste von Elementen die einen festgelegten Anfang und ein festgelegtes Ende haben.
PHP Code:
var_tuple = ("Krieger","Ninja","Sura","Schamane"
Wenn wir nun einen der Werte aus dieser Liste auslesen möchten geht das wie folgt:
PHP Code:
var_tuple[0
So bekommen wir als Ausgabe den Krieger aber wieso ist das so? Eine Liste ist wie eine Tabelle die ebenfalls Reihen und Spalten besitzen kann (in diesem Fall nur Spalten). In Python beginnen die Spalten jedoch mit dem Index 0 und werden dann in Einer-Schritten vorgeführt. Kleine zwischen Aufgabe : Gebe das Element Schamane aus!

Lösung:

List - list

Diese Liste unterscheidet sich kaum zu den Tuple nur das so kein definiertes Ende haben und können beliebig erweitert werden.
PHP Code:
var_list = ["Krieger","Ninja","Sura","Schamane"
Sie wird genauso aufgerufen wie ein Tuple, kann jedoch mit append erweitert werden.
PHP Code:
var_list.append("Wolfman"
String - str

Dieser Datentyp ist eine Zeichenkette, also eine Folge von Buchstaben, Ziffern und Sonderzeichen. Die Besonderheit dabei ist das man bei den Zeichenketten auch den Operator "+" verwenden kann um sie aneinanderzureihen.
PHP Code:
"Ich bin ein"
"Krieger"
" "
print a+c+b
Ausgabe
Ich bin ein Krieger 
Mapping

Enthält Datentypen die Zuordnungen zwischen verschiedenen Elementen herstellen können.

Dictionary

In diesem Fall gibt es nur einen Datentyp der zu der Kategorie Mapping gehört. Dieses Dictionary kann als Liste angesehen werden wo aber zu den einzelnen Elementen noch eine Zuordnungen stattfindet.
Nehmen wir nun als Beispiel ein Item was verschiedene Werte aufweist wie Bonis, Vnum, usw...

PHP Code:
var_dict = {
"vnum"10,
"boni1_id"1
"boni1_var"1000
So jetzt haben in dem Dictionary "var_dict" ein Item gespeichert. Wenn wir nun gerne die vnum haben möchten müssen wir einfach die Zuordnungen verwenden.
PHP Code:
var_dict["vnum"
Als Zuordnungen sollte man jedoch nicht veränderbare Elemente nehmen, denn jedesmal wenn man das Dictionary aufruft ein Hashwert von der Zuordnungen gebildet wird und so das eigentliche Element gefunden wird.
Wenn man aber jetzt veränderbare Zuordnungen nutzt verändert sich der Hashwert auch.
So kann es sein das in der syserr so ein Fehler kommt:

PHP Code:
TypeError: list objects are unhashable 
Dieser Fehler kann auch hervorgerufen wenn man z.b. eine Liste also Zuordnung verwendet.



2.3. Methoden

Kommen wir hier nochmal speziell auf die Methoden zusprechen.
Wir haben bisher eine Autoklasse erstellt, die wir mit dem Preis und dem Namen als Objekt erzeugen können. Jetzt möchten wir wissen wie der Name des Autos ist.
Dazu müssen wir eine Methode hinzufügen in dem Fall eine Getter-Methode, da wir etwas zurück bekommen möchten. Zusätzlich möchten wir noch den Namen ändern können, also die sogenannte Setter-Methode.

PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
    
    def __del__
(self):
        
pass
        
#this is a Destruktor
        
    
def getName(self):
        return 
self.name
        
    def setName
(selfname):
        
self.name name 
Was haben wir nun getan?
Wir haben mit "def methodenName" eine Methode definiert und als Referenz "self" angegeben.
Bei unser "getName" Methode bekommen wir durch die Funktion "return" den Namen wieder zurück.
Weiter geht's mit der "setName" Methode dort haben wir noch ein zusätzlichen Parameter angegeben da wir ja gerne den Namen des Autos ändern möchten.
Dieser Parameter wird dann der "name" Variable zugewiesen.
Jetzt fragt ihr euch sicherlich: "Alles schön und gut aber wie kann ich jetzt die Methoden aufrufen?!".


Ganz einfach, wir wissen ja bereits wie man ein Objekt erzeugt nun müssen wir einfach den Methodenaufruf hintendran hängen.
PHP Code:
objekt Auto("Audi")
objekt.getName() # dies können wir wiederum in einer Variablen abspeichern
objekt.setName("Audi R8"
Durch den Punkt erhält man Zugang auf weitere Elemente des Objekts, in diesem Fall die Methoden.
Im nächsten und letzten Schritt möchten wir nun noch einen Chat ausgeben wenn ein Objekt erstellt wurde.
Also erstellen wir eine weitere Methode die den Chat dann ausgibt. Man kann das auch direkt in den Konstruktor schreiben, aber ich wollte nochmal verdeutlichen wie man innerhalb der Klasse Methoden aufrufen kann.


PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
        self
.chatAusgabe()
    
    
def __del__(self):
        
pass
        
#this is a Destruktor
    
    
def chatAusgabe(self):
        print 
"das Objekt wurde erstellt"
    
    
def getName(self):
        return 
self.name
        
    def setName
(selfname):
        
self.name name 
Wir rufen also innerhalb von Klassen die Methoden durch den Referenzzeiger auf.



2.4 Verweigungen

In diesem Teil beschäftigen wir uns mit den Verzweigungen oder auch bedingten Anweisungen.
Sie dienen dazu, ein Programm in mehrere Pfade oder eben Verzweigungen aufzuteilen.
Nehmen wir wieder das Beispiel mit unser Autoklasse dort möchten wir jetzt eine Bedingung für eine gewisse Anweisung hinzufügen.
Unsere Aufgabe ist nun abzufragen ob der Preis gesetzt ist, falls ja soll ein Text ausgegeben werde.

PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
        self
.chatAusgabe()
        if 
self.preis != 0:
            print 
"Preis wurde erfolgreich gesetzt." 
Also sieht der Syntax wie folgt aus.

PHP Code:
if Bedingung:     #falls
    
Anweisung
elif Bedingung
:    #andernfalls
    
Anweisung
else:              #sonst
    
Anweisung 
Hier hab ich noch zwei weitere Funktionen ins Spiel gebracht einmal das "elif" oder auf Deutsch einfach andernfalls.
Durch das "elif" können wir eine weitere Bedingung für unsere spezielle Situation festlegen.
Zu guter letzt noch das "else" was man mit sonst übersetzen kann. Die Funktion bewirkt einfach, dass wenn keine der Bedingungen zutreffen sollte. die Anweisung des else-Blocks ausgeführt wird.
Wenden wir das wieder auf unser konkretes Beispiel an. Wir möchten nun zusätzlich noch abfragen ob der Preis realistisch ist und nehmen daher als Basiswert 5000 Euro.

PHP Code:
class Auto:

    
def __init__(selfnamepreis ):
        
self.name name
        self
.preis preis
        self
.chatAusgabe()
        if 
self.preis != and self.preis >= 5000:
            print 
"Preis wurde erfolgreich gesetzt."
        
elif self.preis 5000 and self.preis != 0:
            print 
"Dieser Preis ist nicht realistisch!"
        
else:
            print 
"Der Preis wurde noch nicht gesetzt." 
Jetzt müsste uns allen auffallen das ich die eigentliche Bedingung erweitern musste,
denn wenn ich bei dem "elif" nur die Bedingung haben würde, dass es kleiner als 5000 sein muss, trifft das auch für unsere "if" Bedingung oft zu.
Als kleine Bemerkung dazu muss uns klar sein: Sobald wir in eine Anweisung dieser Verzweigung gelangt sind, wird keine weiter Abfrage der Bedingungen stattfinden und das Programm unterhalb des Code-Blocks weitergeführt.


Ich habe absichtlich keine Kategorien fertiggestellt, weil ich sehen wollte ob es in dem Ausmaß überhaupt gefragt ist. Ob es in einer gekürzten Form gefragt, oder gar nicht in Anspruch genommen wird. Solltet ihr Anregungen, Verbesserungswünsche oder eine Idee für ein besseres Format haben, immer her damit! Ich habe zunächst versucht in einem sehr einfachen Deutsch zu schreiben ohne viele Fremdwörter zu verwenden, ich hoffe das ist mir gelungen.
Im weiteren Verlauf, wenn wir zu den GUIS gelangen werde ich natürlich viele Beispiele veröffentlichen und dazu ein oder zwei Releases, aber auch bei der Interaktion mit Lua könnt ihr gern Beispiele ergänzen, die man dann in den Guide einbaut und anhand dessen die Materie noch ausführlicher erklärt.


Special Thanks:
JusticeTheVoice


King Regards,

Copy
10/13/2014 01:21 .He3o Copy™#2
#genehmigter Platzhalter
10/13/2014 01:58 Zynko™#3
Danke *.*
Endlich wird es mal ausführlich erklärt :handsdown:

#edit

Habe es gerade durchgelesen top sehr verständlich erklärt meiner Meinung nach.
Freue mich auf weiteres :D
10/13/2014 02:15 Antigene#4
Sehr schön

so muss das sein How To wo die Leute auch was dafür tun müssen
10/13/2014 02:17 .He3o Copy™#5
Quote:
Originally Posted by Antigene View Post
Sehr schön

so muss das sein How To wo die Leute auch was dafür tun müssen
Ja ist ja nur der Anfang ist bisher nur 10% davon deswegen möchte ich ja gerne wissen ob ich es so beibehalten soll oder etwas ändern soll. Vorallem welche Beispiele ihr gerne bei den Guis und mit der Interaktion mit Lua sehen wollt.
10/13/2014 02:57 CryPrime#6
Ob du das durch ziehst und immer wieder neue Tutorials
bringen wirst mhm.. mal sehen, kann man eventuell was kleines
daraus lernen

PS:
Kriegst nen Thanks für des schreiben, bzw für deine mühe.
10/13/2014 03:13 .He3o Copy™#7
Quote:
Originally Posted by CryPrime View Post
Ob du das durch ziehst und immer wieder neue Tutorials
bringen wirst mhm.. mal sehen, kann man eventuell was kleines
daraus lernen

PS:
Kriegst nen Thanks für des schreiben, bzw für deine mühe.
Ist eine berechtigte Mutmaßung aber ich kann dich beruhigen, da ich jetzt bald mein Abi mache und dort das Thema OOP aufgegriffen wird und ich dort sehr viel erklären muss ist dies eine sehr gute Übung für mich.


Mfg

Copy
10/13/2014 06:42 Gl0bal#8
Oha wer ist dieser kranke Type?
Ne Spaß :)
Super gemacht! Wird bestimmt vielen sehr viel weiter helfen.

Wenn ich noch einen kleinen Tipp geben darf: ich würde noch etwas näher erklären, was ein Objekt (bzw. ich nenne es Instanz) ist. Das ist ja sehr wichtig, aber da gehst du nicht so ganz drauf ein.
MfG
10/13/2014 06:57 Yiv#9
Wow, da hat sich jemand wirklich Mühe gegeben, ein schönes Tutorial zu schreiben. Auch wenn hier und da evtl. Verbesserungsbedarf besteht, ist es im Großen und Ganzen ein Top-Tutorial!

Vielen Dank für die Mühe, auch, wenn ich es nicht gebrauchen kann. ;)

MfG

P.S: Michi, hate das bitte mal nicht! :) Wir wissen alle, dass C++ > LUA > Python ist :P
10/13/2014 08:14 .He3o Copy™#10
Quote:
Originally Posted by Yiv View Post
Wow, da hat sich jemand wirklich Mühe gegeben, ein schönes Tutorial zu schreiben. Auch wenn hier und da evtl. Verbesserungsbedarf besteht, ist es im Großen und Ganzen ein Top-Tutorial!

Vielen Dank für die Mühe, auch, wenn ich es nicht gebrauchen kann. ;)

MfG

P.S: Michi, hate das bitte mal nicht! :) Wir wissen alle, dass C++ > LUA > Python ist :P
Ich glaube das keiner das "C++> Lua> Python" :D
Achja wenn ihr Kritik habt ob positiv oder negativ das interessiert mich sehr :) vorallem was ich besser machen kann das es wirklich ein gutes Tutorial wird das jeder verstehen kann

Quote:
Originally Posted by Gl0balTheWriter View Post
Oha wer ist dieser kranke Type?
Ne Spaß :)
Super gemacht! Wird bestimmt vielen sehr viel weiter helfen.

Wenn ich noch einen kleinen Tipp geben darf: ich würde noch etwas näher erklären, was ein Objekt (bzw. ich nenne es Instanz) ist. Das ist ja sehr wichtig, aber da gehst du nicht so ganz drauf ein.
MfG
Danke für den Tipp ist oft nicht sehr einfach diese Wörter zu erklären damit es jeder versteht.
10/13/2014 08:25 Yiv#11
Was meinst du mit dem?
Quote:
Originally Posted by .He3o Copy™ View Post
Ich glaube das keiner das "C++> Lua> Python" :D
MfG
10/13/2014 08:27 .He3o Copy™#12
Quote:
Originally Posted by Yiv View Post
Was meinst du mit dem?

MfG
Oh tut mir leid hab das am Handy geschrieben eigentlich sollte da noche in Wort namens "anzweifeln" hin


Mfg
10/13/2014 08:28 Yiv#13
Quote:
Originally Posted by .He3o Copy™ View Post
Oh tut mir leid hab das am Handy geschrieben eigentlich sollte da noche in Wort namens "anzweifeln" hin


Mfg
Kenne da einige, die Python vor LUA stellen, verstehe das gar nicht :???:

MfG
10/13/2014 08:56 .He3o Copy™#14
Quote:
Originally Posted by Yiv View Post
Kenne da einige, die Python vor LUA stellen, verstehe das gar nicht :???:

MfG
Finde ich gar nicht verwunderlich..
Meiner Meinung nach kann man Python und Lua kaum vergleichen da sie für ganz andere Verwendungszwecke ausgelegt sind. Wenn man kaum CPU zur Verfügung hat bevorzugt man natürlich Lua. Dann gibt es noch die Streitigkeiten vom Syntax was wirklich sehr verschieden von den beiden ist
10/13/2014 09:39 .Risan.#15
PHP Code:
var_list = ["Krieger","Ninja","Sura","Schamane"
Wenn es eh per Array list, geht es auch so:
PHP Code:
var_list "Krieger","Ninja","Sura","Schamane" 
Es muss nicht zwingend [] { } sein :)

Anonsten dachte als ich die Variablen gelesen habe, an c++ xD
Wieso du den Variablen solche namen vergibst, ist noch fraglich das ist bei Python Pupse..

EDIT:
Sehe eben du hast append.. Dann muss natürlich es eine Tabelle sein.. Aber wer es ohne macht geht mein beispiel oben ebenfalls.

Hier mal eine krasse Tabelle:
PHP Code:
Katagorie_Table_Aktionhous = [ 
{    
"NameK":"Waffen""SonderSortStart":10"SonderSortEnd":15"Daten": [ 
{    
"Name":"Einhand""SonderSort":10    },
{    
"Name":"Dolche",  "SonderSort":11    },
{    
"Name":"Bogen""SonderSort":12    },
{    
"Name":"Zweihand""SonderSort":13    },
{    
"Name":"Glocke""SonderSort":14    },
{    
"Name":"Fucher""SonderSort":15    },
]},
 
{    
"NameK":"Ausruestungen""SonderSortStart":20"SonderSortEnd":22"Daten": [ 
{    
"Name":"Ruestung (Armor)""SonderSort":20    },
{    
"Name":"Helm""SonderSort":21},
{    
"Name":"Schild""SonderSort":22    },
]},

{    
"NameK":"Schmuckzeug""SonderSortStart":23"SonderSortEnd":26"Daten": [ 
{    
"Name":"Armbaender""SonderSort":23    },
{    
"Name":"Schuhe""SonderSort":24    },
{    
"Name":"Kette""SonderSort":25    },
{    
"Name":"Ohrringe""SonderSort":26    },
]},

{    
"NameK":"Reittiere""SonderSortStart":30"SonderSortEnd":35"Daten": [ 
{    
"Name":"Futter""SonderSort":30    },
{    
"Name":"Siegel""SonderSort":31    },
{    
"Name":"Sonstiges""SonderSort":32    },
]},

{    
"NameK":"Pets""SonderSortStart":36"SonderSortEnd":40"Daten": [ 
{    
"Name":"Futter""SonderSort":36    },
{    
"Name":"Siegel""SonderSort":37    },
{    
"Name":"Sonstiges""SonderSort":38    },
]},

{    
"NameK":"Kostueme""SonderSortStart":41"SonderSortEnd":42"Daten": [ 
{    
"Name":"Anzuge""SonderSort":41    },
{    
"Name":"Frisuren""SonderSort":42    },
]},

{    
"NameK":"Sonstiges""SonderSortStart":100"SonderSortEnd":200"Daten": [ 
{    
"Name":"Tranke""SonderSort":100    },
{    
"Name":"UppItems""SonderSort":101    },
{    
"Name":"Fische""SonderSort":102    },
{    
"Name":"GildenMaterial""SonderSort":103    },
{    
"Name":"Geistgesteine""SonderSort":104    },
{    
"Name":"Nicht zugeordnet""SonderSort":200    },
]},


{    
"NameK":"Letzten 10 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":10"Daten": [ ]},
{    
"NameK":"Letzten 30 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":30"Daten": [ ]},
{    
"NameK":"Letzten 50 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":50"Daten": [ ]},
{    
"NameK":"Letzten 100 reingesetzten Items""SonderSortStart":1"SonderSortEnd":200"LastItemCounts":100"Daten": [ ]},