Diese Datei ist da, dem geneigten LEser den Code, der da von mir farbriziert worden ist, etwas nher zu bringen, da 
ich gelegentlich dazu neige, den Code zu verkomplizieren.  


----- Die Programmierung -----

Ich hatte im QuickBASIC-Forum schon so viel ber freeBASIC gehrt, dass ich mich spontan entschloss, die 
aktuelle Aufgabenstellung mit freeBASIC (Version 0.13b) anzugehen. 

Dies ist mein erstes greres Projekt, das ich mit Hilfe von freeBASIC programmiert habe, und daher mag es 
dem einen oder anderen eingefleischten freeBASIC-Programmierer bei Durchsicht meines Programmcodes kalt den 
Rcken herunterlaufen...  

Wie auch immer, bei der Programmierung legte ich sehr groen Wert auf eine einfache und zugleich komfortable 
Handhabung der Kassensoftware. 
Analog zur Einfachheit der Bedienung entschied ich mich fr eine einfache graphische Oberflche, um zum einen 
das Aussehen richtiger Kassensoftware zu imitieren, und zum anderen, um DOS-Nostalgikern eine Freude zu machen...


   
----- Die groe Schleife -----

Also, zuallererst muss man wisen, dass der gesamte Code aus einer riesigen DO-LOOP Schleife besteht.  
So kann man sich die ganzen Schleifen zur Abfrage der Tastatur innerhalb eines Menpunktes sparen.  

Da es so aber stark flimmern wrde, entschied ich mich, Doublebuffering zu verwenden. 

Am Anfang der Schleife steht der Befehl 'SLEEP 3', der verhindern soll, dass der arme Prozessor voll 
ausgelastet wird.



----- Die Benutzereingabe -----

Zu Beginn eines jeden Schleifendurchlaufs wird die gerade gedrckte Taste in der Variable 'TastaturEingabe$' gespeichert.
Im Programm wird in jedem Men darauf zugegriffen.



----- Die Tasks -----

Um das Programm bersichtlich zu halten, entschloss ich mich, das aktuell anzuzeigende Objekt (z.B. die Produkteingabe)
in eine Variable zu schreiben. Sinnigerweise benannte ich diese mit task$. 

Dem aufmerksamen Leser mag jetzt schon aufgefallen sein, dass es sich bei der Variable task$ um eine 
Stringvariable handelt.

Es wurde eine Stringvariable verwendet, damit auch andere Personen verstehen, was das Programm geradezu machen hat.   



----- Die einzelnen Mens -----

Jedes einzelne Men, sei es nun das Anmeldungs-Men oder die Produkteingabe, ist im Grunde gleich aufgebaut:

Zu erst findet man die Abfrage der Variable task$. Dies geschieht mit Hilfe eines gigantischen SELECT-CASE-Blocks, der
sich ber das ganze Programm erstreckt.

Nun folgt im Allgemeinen die Anweisung 'drawbox'. Dieses Unterprogramm erstellt - wer htte es gedacht - eine Box aus
ASCII-Symbolen auf dem Bildschirm.

Danach folgt der Teil, der sehr stark von der Aufgabe des jeweiligen Objektes abhngt; hier knnen sowohl 
Eingaberoutinen stehen, als auch 'druck'-Unterprogramm-Aufrufe, die einen Text auf den Bildschirm zaubern.

Jetzt kommt der Teil, der bei alen Mens gleich ist: Die Tastaturabfrage, welche immer aus einem SELECT CASE-Block 
besteht, der die bereits besprochene Variable 'TastaturEingabe$' abfragt.

Um einiger Verwirrung vorzubeugen: In den CASE-Blcken der Tastaturabfrage stehen Kommentare, die zum Beispiel verraten,
was 'chr$(18)' bedeutet. Wenn man wissen mchte, was z.B. der Code 'chr$(18)' bedeutet, muss man *ber* die Zeile 
'case chr$(18)' 
schauen, wo in unserem Beispiel 
' Strg+R  
steht. 



----- Die Einstellungen -----

Da dieses Programm viele Funktionen bietet, bruchte man daher auch sehr viele Variablen. Daher wurde ein eigener Datentyp
namens 'settings' definiert, der alle Einstellungen enthlt. 

Die Variable vom Typ 'settings' heit 'Einstellungen'. 

Es wird daher oft vorkommen, dass man whrend des Durchlesens des Codes auf Zeilen wie 

'with Einstellungen'
[...]
'end with'

trifft.    



----- str$() und val() -----

str$() und val() waren bei diesem Programm meine besten Freunde; das liegt daran, dass ich fr viele Zahlenverarbeitungen
aus optischen Grnden einen String verwendete.
Ich hoffe, sie machen das Programm nicht zu unbersichtlich.



----- Last but not least: Die Unterprogramme -----

Die Unterprogramme sind am Ende des Codes zu finden; aus bersichtlichkeitsgrnden wurden die einzelnen Unterprogramme mit
 
' *******************************

voneinander abgetrennt, da es in freeBASIC keine einzelnen Fenster fr die Unterprogramme gibt.



So, ich hoffe, ich war mit diesem Text in der Lage, allen Lesern mein Programm ein kleines Stckchen 
begreiflicher zu machen...  