6.6 Contest

Die variable Contestauswertung macht es möglich, das jeder beliebige Contest eingegeben werden kann und MLog die Auswertung übernimmt. Natürlich kann immer nur eine Klasse ausgewertet werden. Die Auswertung nimmt immer das ganze Log als Basis für die Auswertung, daher ist es notwendig, das eigene Log zunächst mit Excel oder LogConverter (s. Tools) auf die gewünschten QSOs zu beschränken.

Felder

Folgende Felder stehen in der Contestauswertung zur Verfügung:

fNumber
fDate
fUtc
fBand
fMode
fCall
fRstTx
fRstRx
fDok
fName
fQth
fLocator
fComments
fDistance

enthält die Distanz zwischen dem Heimatlocator und dem Locator der anderen Station Station in km, sofern dieser angegeben ist.
fGrdDistance
enthält den Locator-Ring, in dem sich der Locator ausgehend vom eigenen Locator befindet. Hierzu werden die Großfelder verwendet.
fPrefix
s. u.
fContinent
EU = Europa, AS = Asien, OC = Ozeanien, AN = Antarktis, NA = Nord-Amerika, SA = Süd-Amerika, AF = Afrika

Diese Felder werden wie Variablen in den Bedingungen eingesetzt (s.u.)

Funktionen

Folgende Funktionen stehen in der Contestauswertung zur Verfügung:

copy(STRING, START, LENGTH)

Gibt die über START und LENGTH definierten Zeichen aus dem STRING zurück, wobei das erste Zeichen an der Position 1 ist, das zweite an 2 u. s. w..

So gilt z. B.: copy("hallo", 2, 2) eq "ll"

pos(SUBSTRING, STRING)

Gibt die Position des ersten Zeichens eines SUBSTRINGs in einem STRING zurück. Ist dieses Zeichen nicht im STRING vorhanden, so wird 0 zurückgegegben.

So gilt z. B.: pos("l", "hallo") eq 2

length(STRING)

Gibt die Länge eines STRINGs zurück. So gilt z. B.: length("hallo") eq 5

(Die Funktionen orientieren sich an den gleichnamigen Funktionen in Delphi.)

Verwendung

Alle konstanten Werte müssen entweder Zahlen sein, oder in " (doppelten Anführungszeichen) stehen (was dann ein String wäre). Findet MLog Zeichenfolgen, die weder eine Zahl, noch ein String, noch eine Variable (also ein Feld), noch eine Funktion sind, wird folgender Fehler ausgelöst:

Bild 6.6.a

In diesem Fall war hugo die Zeichenfolge, mit der MLog nichts anzufangen wusste. Als "hugo" wäre es als ein String mit dem Inhalt hugo angenommen worden.

Kommen wir jetzt zur Anwndung dieses Wissens: In der Tabelle der Regeln muss beim anlegen einer neuen Regel als erstes in Spalte 3 angegegben werden, um was es sich handelt. Hier ist nur PKT für Punkt oder MLT für Multiplikator möglich. Alle anderen Werte in dieser Spalte führen zu Fehlern.

Nun muss in der zweiten Spalte angegeben werden, wieviel Punkte/Multiplikatoren diese Regel vergeben soll. In dieser Spalte dürfen daher nur Zahlen bzw. Ausdrücke die am Ende zu einer Zahl führen stehen. Ein solcher Ausdruck wäre zum Beispiel auch: copy(fRstRx, pos(" ", fRstRx) - 1, length(fRstRx) - pos(" ", fRstRx)) Dieses Beispiel geht davon aus, dass im Feld RstRx - also dem erhaltenen Rapport - nicht nur dieser, sondern auch immer nach einem Leerzeichen eine weitere Zahl folgt. Dies wäre zum Beispiel das Alter des Operators (QSO-Party). Mit diesem entnimmt die Funktion copy immer diese Zahl nach dem Leerzeichen und gibt sie zurück. (Hierbei macht es - anders als bei Delphi - keinen Unterschied, dass die Funktion copy eigentlich einen String und keine Zahl zurückgibt.)

Ist dies erledigt funktioniert diese Regel schon und gibt jedem QSO diese Punkte oder Multiplikatoren (je nach dem, für was man sich entschieden hat). Um dies nun noch weiter einzuschränken gibt es die erste und die letzte Spalte. Mit der ersten lässt sich definieren, welche Felder alle gleich sein müssen, damit die Regel nicht mehr ausgeführt wird. D. h. steht in dieser Spalte fCall, wird die Regel nur angewendet, wenn das Call nicht bereits weiter oben aschon einmal voprgekommen ist im akteullen Logbuch. Steht in diesem Feld fCall;fBand;fMode würde dies alleine nicht dazu führen, dass die Regel nicht merh gültig ist. Nun müssen Band, Mode und Rufzeichen in der Konstellation schon einmal vorgekommen sein, damit die Regel nicht noch einmal wirkt. Dies ist zu vergelcihen mit folgender Formulierung aus einer Contestausschreibung: "Multiplikatoren pro Band und pro Mode". Allerdings sind auch hier kompliziertere Konstrukte möglich. So prüft zum Beispiel copy(fCall,1,1), ob der erste Buchstaben des Rufzeichens schon einmal als solcher vorgekommen ist.

Die letzte Spalte ist die mächtigste, denn hier können mehre Bedingungen (wiederrum getrennt durch ein ; (Semikolon)) angegeben werden, die erfüllt sein müssen, damit die Regel angewendet wird. Eine solche Bedingung besteht im Kern immer aus eq (gleich - eng. equal) oder neq (ungleich - engl. not equal). So würde zum Beispiel die Bedingung "hallo" eq "hugo" immer dazu führen, dass eine Regel nicht mehr ausgeführt wird, da "hallo" nie das gleiche ist wie "hugo" − wer hätte das auch erwartet ;-) Nimmt man nun hingegen copy(fCall,1,1) neq "D", so wird die Bedingung nur noch ausgeführt, wenn der erste Buchstabe des Rufzeichens ein D ist. (In diesem Fall ist aber meistens die Verwendung von fPrefix als Alternative zu fCall sinnvoller, da fPrefix immer den Prefix enthält, unter dem das Land als DXCC bekannt ist. So gilt fPrefix eq "DL" auch, wenn das Feld fCall DB7BN enthält.)

Gut zu wissen ist außerdem noch, dass alle Überprüfung ohne Rücksicht auf groß bzw klein schreibung vorgenommen werden. D. h. folgende Bedingung gilt: "HUGO" eq "hugo"

Strings, Zahlen, Variablen, Funktionen, Neu, Wert, Art, Bedingung

Buttons

neue Regel

Fügt der Tabelle eine neue Spalte hinzu.

Regeln laden

Bietet die Möglichgeit einen Satz Regeln zu laden.

Regeln speichern

Bietet die Möglichkeit einen Satz Regeln zu speichern.

Regel löschen

Löscht ohne Nachfrage (!) die aktuelle Zeile.

>>> Contest auswerten <<<

Startet die Auswertung des Contestes. Dies kann ein wenig dauern.

Auswertung nach Excel exportieren

Exportiert die Tabelle unter Ergebnis nach Excel zur weiteren Verwendung.

www.schmitz-sh.de/mlog/06-6.htm