Quick-Tips

Cookie-Jar in GFA-BASIC

Da das GFA-BASIC keine eigenen Befehle zum Bearbeiten und Auslesen der Cookie-Jar enthält, muß man hier selber Hand anlegen. Die drei Funktionen (siehe Listing) helfen hierbei und können problemlos in eigene Programme eingebunden werden, da alle Variablen als LOCAL deklariert sind.

Vor TOS 1.06 wurde die Cookie Jar nicht automatisch installiert. Hier hilft die Function exist_cookiejar weiter, die nur abfragt, ob ein Cookie Jar bereits installiert wurde.

Am häufigsten wird wohl die Function get_cookie() benötigt, die abfragt, ob ein bestimmter Cookie bereits im Cookie-Jar installiert ist und den Inhalt des 4 Byte langen Eintrags zurückgibt, der weitere Informationen zu dem Cookie enthält.

Mit der Funktion set_cookie() kann der Cookie-Eintrag geändert werden. Wurde die Änderung erfolgreich durchgeführt, gibt die Funktion TRUE (-1) zurück; trat ein Fehler auf, so wird eine Null zurückgegeben. Und jetzt ein Beispiel:

nvdi!=@get_cookie("NVDI",eintrag%)

Ist NVDI installiert, so enthält die Variable nvdi! den Wert TRUE (-1), sonst den Wert FALSE (0). Die Variable eintrag% muß nur ausgewertet werden, falls konkrete Informationen zu der augenblicklichen Einstellung von NVDI benötigt werden. Ist NVDI nicht installiert, bleibt eintrag% unverändert. Genaue Informationen über die Belegung von eintrag% muß der Doku zu dem jeweiligen Programm (in diesem Fall NVDI) entnommen werden.

Auf die gleiche Art kann natürlich auch nach Programmen wie LTMF (Let ’em fly) oder WINX gefragt werden. Mit _CPU kann der Prozessortyp abgefragt werden, wobei eintrag% dann Werte von 0,10,20,30,40 oder 60 enthalten kann für Rechner mit einem 68000, 68010, usw ... Der Cookie _FPU enthält Informationen über den Fließkommaprozessor.

'(c)1995 MAXON Computer 
'Autor: Peter Harder

FUNCTION get_cookie(code$,VAR eintrag%)
    $F%
    LOCAL code%,cookie_ptr%,i% 
    cookie_ptr%=LPEEK(1440)
    ' Cookie Jar überhaupt installiert?
    IF cookie_ptr%>0 AND LEN(code$)=4 
        code%=CVL(code$)
        FOR i%=cookie_ptr% TO cookie_ptr%+640 STEP 8 
            EXIT IF code%={i%} OR {i%}=0 
            ' Cookie Jar durchsuchen 
        NEXT i%
        IF code%={i%}
            ' Cookie gefunden?
            eintrag%={i%+4}
            ' ja, 4 Byte langen Eintrag auslesen 
            RETURN TRUE 
        ELSE
            RETURN FALSE 
        ENDIF 
    ELSE
        RETURN FALSE 
    ENDIF 
ENDFUNC
'
FUNCTION set_cookie(code$,eintrag%)
    $F%
    LOCAL code%,cookie_ptr%,i% 
    cookie_ptr%=LPEEK(1440)
    IF cookie_ptr%>0 AND LEN(code$)=4 
        code%=CVL(code$)
        FOR i%=cookie_ptr% TO cookie_ptr%+640 STEP 8 
            EXIT IF code%={i%} OR {i%}=0 
        NEXT i%
        IF code%={i%}
            {i%+4}=eintrag%
            RETURN TRUE 
        ELSE
            RETURN FALSE 
        ENDIF 
    ELSE
        RETURN FALSE 
    ENDIF 
ENDFUNC
'
FUNCTION exist_cookiejar 
    $F%
    IF LPEEK(1440)=0 
        RETURN FALSE 
    ELSE
        RETURN TRUE 
    ENDIF 
ENDFUNC

Peter Harder
Aus: ST-Computer 09 / 1995, Seite 120

Links

Copyright-Bestimmungen: siehe Über diese Seite