Deklarationen
Variablen
Folgende Variablen werden global im Programm benötigt:
var
MagSquare:Array[0..99,0..99] Of Word;
n:word;
size,a,b:byte;
AddVal,MultVal:Longint;
MaxLen:Byte;
SqrMagic:Boolean;
RotationIndex:Byte;
Item:String;
code:Integer;
-
MagSquare vom Typ Word (0-65535), maximale Größe 100 x 100
Das Array wird immer mit MagSquare[a,b] angesprochen
-
a, b vom Typ Byte (0-255)
a gibt die Spalten an und b die Zeilen. Es sind zweistellige natürliche Zahlen.
-
size vom Typ Byte (0-255)
Dieser Variable wird immer eine natürliche Zahl zwischen 3 und 99 zugewiesen.
-
n vom Typ Word (0-65535)
Die größte Zahl in einem Magischen 99x99 Quadrat ist 99², 9801. Es können nur natürliche Zahlen eingetragen werden.
-
AddVal vom Typ LongInt (0-2147483647)
AddVal ist eine 7-stellige natürliche Zahl oder eine 6-stellige negative ganze Zahl.
-
MultVal vom Typ LongInt (0-2147483647)
MultVal ist eine 7-stellige natürliche Zahl.
-
MaxLen vom Typ Byte (0-255)
Maxlen gibt die Länge der längsten Zelle zurück. Das sind weniger als 10 Zeichen.
-
SqrMagic vom Typ Boolean (Wahr oder Falsch)
Diese Variable gibt zurück, ob das Array ein Magisches Quadrat enthält, oder nicht.
-
RotationIndex vom Typ Byte (0-255)
RotationIndex kann nur Werte zwischen 0 und 8 annehmen. Was sie bedeuten wird beim Drehen und Spiegeln erklärt.
-
Item vom Typ String;
Item enthält immer den Wert einer Zelle, schon multipliziert und addiert.
-
code vom Typ Integer -32768-3276
code ist bei der val-Prozedur nötig.
Prozeduren und Funktionen
Folgende Prozeduren und Funktionen werden global im Programm benötigt:
function MultStr(Character:String;Multiplicator:word):String;
procedure EnableBtn;
procedure CreateOddMS;
procedure CreateQuartMS;
procedure CreateEvenMS;
procedure TestMagSquare;
procedure GetMaxLength;
procedure MagSquareOutput;
procedure GetRotIndex;
procedure edtSizeChange(Sender: TObject);
procedure edtAddChange(Sender: TObject);
procedure edtMultChange(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure btnCreateClick(Sender: TObject);
procedure edtSizeKeyPress(Sender: TObject; var Key: Char);
procedure edtAddKeyPress(Sender: TObject; var Key: Char);
procedure edtMultKeyPress(Sender: TObject; var Key: Char);
procedure btnStandardClick(Sender: TObject);
procedure FormResize(Sender: TObject);
-
function MultStr(Character als String, Multiplicator als Word) als String
Diese Funktion produziert eine Reihe sich wiederholender Strings. Maximale Länge ist dabei 65536. Erklärt wird diese Funktion bei den Ausgabe-Prozeduren.
-
procedure EnableBtn
Diese Prozedur setzt bei den richtigen Eingaben des Benutzers die Enabled-Eigenschaft des Erstellen-Buttons auf True, bzw. auf False. Der Code dafür steht bei den Eingabe-Prozeduren.
-
procedure CreateOddMS
Diese Prozedur erstellt ein Magisches Quadrat mit ungerader Seitenlänge. Der Code steht bei der ungeraden Seitenlänge.
-
procedure CreateQuartMS
Diese Prozedur erstellt ein Magisches Quadrat mit doppelt gerader Seitenlänge. Der Code steht bei der doppelt geraden Seitenlänge.
-
procedure CreateEvenMS
Diese Prozedur erstellt ein Magisches Quadrat mit gerader Seitenlänge. Der Code steht bei der geraden Seitenlänge.
-
procedure TestMagSquare
Diese Prozedur gibt einen Wert zurück, der aussagt, ob das Quadrat im Array magisch ist oder nicht. Der Code steht bei der Kontrolle.
-
procedure GetMaxLength
Diese Prozedur ermittelt die längste Zahl im Magischen Quadrat. Der Code steht bei den Ausgabe-Prozeduren.
-
procedure MagSquareOutput
Diese Prozedur füllt das Ausgabetextfeld mit dem Magischen Quadrat. Der Code steht bei den Ausgabe-Prozeduren.
-
procedure GetRotIndex
Diese Prozedur gibt einen Wert zurück, der für das Drehen und Spiegeln charakterisieren ist. Der Code steht beim Drehen und Spieglen.
-
procedure edtSizeChange
-
procedure edtAddChange
-
procedure edtMultChange
Diese drei Prozeduren werten aus, ob aus den eingegebenen Zahlen ein Magisches Quadrat erstellt werden kann. Näheres dazu kann man bei den Eingabe-Algorithmen finden.
-
procedure edtSizeKeyPress
-
procedure edtAddKeyPress
-
procedure edtMultKeyPress
Diese drei Prozeduren werten aus, welche Taste der Benutzer gedrückt hat. Näheres dazu kann man bei den Eingabe-Algorithmen finden.
-
procedure btnCancelClick
Ein Klick auf diesen Button erstellt das Magsiche Quadrat. Die Erklärung dafür steht bei den Ausgabe-Prozeduren.
-
procedure btnCreateClick
Ein Klick auf diesen Button beendet das Programm. Die Erklärung dafür steht bei den anderen Prozeduren.
-
procedure btnStandardClick
Ein Klick auf diesen Button setzt alle Werte aud en Standart zurück. Die Erklärung dafür steht bei den anderen Prozeduren.
-
procedure FormResize
Wenn die Größe des Ausgabe-Fensters geändert wird, muss sich auch die größe des Textfeldes ändern. Die Erklärung dafür steht bei den anderen Prozeduren.