GFA-Basic: Errors
-----------------

GFA-Basic is known to throw a lot of Enforcer hits.

The TITLEW command accessses illegal memory addresses. Thus you should
not use this command.

The following piece of code replaces the TITLEW and CLOSEW commands. Note
that 3 arrays have to be DIM'ed and initialized before using the new
procedures.

  @wintitle(window #, "Window Title")
  
  @winclose(window #)

Replace window # by the number of your window. Replace 20 by the maximum
number of windows you want to use.
  

GFA-Basic Fehler
----------------

GFA-Basic wirft bekanntlich eine Menge Enforcer-Hits.

Das Hauptproblem ist der Befehl TITLEW, der ungültige Speicheradressen
anspricht. Statt dieses Befehls sollte direkt das Betriebssystem benutzt
werden.

Die folgenden Prozeduren ersetzen die Befehle TITLEW und CLOSEW. Vor
ihrer Verwendung müssen 3 Felder (Arrays) dimensioniert und initialisiert
werden.

  @wintitle(window #, "Window Title")
  
  @winclose(window #)
        
Ersetzen Sie window # durch die Nummer des Fensters und 20 durch die
höchste in dem Programm benutzte Fensternummer.


Code
----

' Initialization *** Initialisierung

DIM win%(20),cgt%(20),cgt$(20)
FOR t%=0 TO 20
  win%(t%)=0
  cgt%(t%)=0
  cgt$(t%)=""
NEXT t%

' Procedures *** Prozeduren 

PROCEDURE wintitle(win%,title$)
  LOCAL a%,b%,t%,l%
  IF WINDOW(win%)<>win%(win%)
    cgt%(win%)=0
    win%(win%)=WINDOW(win%)
  ENDIF
  IF cgt%(win%)>0
    ~FreeMem(cgt%(win%),1000)
  ENDIF
  cgt%(win%)=AllocMem(1000,65539)
  IF cgt%(win%)>0
    a%=WINDOW(win%)
    cgt$(win%)=title$+CHR$(0)
    b%=VARPTR(cgt$(win%))
    l%=LEN(cgt$(win%))
    IF (l%>0)
      BMOVE V:cgt$(win%),cgt%(win%),l%
    ELSE
      POKE cgt%(win%),0
    ENDIF
    ~SetWindowTitles(a%,cgt%(win%),cgt%(win%))
  ENDIF
RETURN

PROCEDURE winclose(win%)
  win%(win%)=TIMER
  CLOSEW #win%
RETURN


Distribution
------------

--- Public Domain ---

You may use this code in your own programs.

Sie dürfen den Code in Ihre eigenen Programme einbauen.


Contact / Kontakt
-----------------

Frank Reibold
Ottberger Weg 13
31737 Rinteln

GERMANY