GLBasic forum

Other languages => GLBasic - de => Topic started by: sechsrad on 2008-Feb-27

Title: bank-programm spielt verrückt.
Post by: sechsrad on 2008-Feb-27
wenn ich glbasic zum erstenmal lade und dieses bank-programm ausprobiere, kommt die untenstehende fehlermeldung.
wenn ich jetzt das programm neu aus mein sicherheitsarchiv wieder in den ordner von glbasic lade und das fehlerverursachende programm rausnehme, läuft dieses gleiche programm fehlerfrei.

komisch!

mfg


Code (glbasic) Select
PRINT "bank erstellen - mousewait",0,150
SHOWSCREEN
MOUSEWAIT

CREATEBANK(0, 100*100)

PRINT "daten einlesen - mousewait",0,160
SHOWSCREEN
MOUSEWAIT

FOR y=0 TO 99
    FOR x=0 TO 99
        POKEBYTE(0, x+(y*10), RND(1))
    NEXT
NEXT

PRINT "daten ausgeben - mousewait",0,170
SHOWSCREEN
MOUSEWAIT

FOR y=0 TO 10
    FOR x=0 TO 10
        PRINT PEEKBYTE(0, x+(y*10)), 20+x*6, 20+y*6
    NEXT
NEXT

PRINT "bank ausgeben und freigegeben - mousewait",0,180
SHOWSCREEN
MOUSEWAIT
FREEBANK(0)

PRINT "ende - mousewait",0,190
SHOWSCREEN
MOUSEWAIT

FUNCTION _foo:
ENDFUNCTION

INLINE
DGArray gMemBanks;
class MemBank_cleaner
{
   public:
   ~MemBank_cleaner()
   {
      for(int i=0; i<(int)LEN(gMemBanks); ++i)
         FREEBANK(i);
   }
} gMemBankClean;
ENDINLINE

FUNCTION CREATEBANK: index, memsz
INLINE
if(LEN(gMemBanks) <= index)
   REDIM(gMemBanks, index+1);
   gMemBanks(index) = new unsigned char[(int)memsz];
ENDINLINE
ENDFUNCTION

FUNCTION POKEBYTE: ibank, position, value
INLINE
   gMemBanks(ibank)[(int)position] = (unsigned char)value;
ENDINLINE
ENDFUNCTION

FUNCTION PEEKBYTE: ibank, position
INLINE
   return (DGInt)gMemBanks(ibank)[(int)position];
ENDINLINE
ENDFUNCTION

FUNCTION FREEBANK: ibank
INLINE
   if(gMemBanks(ibank))
   {
      delete[] gMemBanks(ibank);
      gMemBanks(ibank) = 0L;
   }
ENDINLINE
ENDFUNCTION
Quotecompiling:
C:\DOKUME~1\pebier\LOKALE~1\Temp\glbasic\gpc_temp0.cpp: In destructor `__GLBASIC__::MemBank_cleaner::~MemBank_cleaner()':
C:\DOKUME~1\pebier\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:52: error: expected primary-expression before "int"
C:\DOKUME~1\pebier\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:52: error: `i' was not declared in this scope
C:\DOKUME~1\pebier\LOKALE~1\Temp\glbasic\gpc_temp0.cpp:52: error: expected `;' before ')' token
Title: bank-programm spielt verrückt.
Post by: S.O.P.M. on 2008-Feb-28
Der Grund könnte das allzubekannte Problem mit der Behandlung von Code in Inline-Blöcken sein: Ich selbst habe das immer anhand von Problemen mit Groß- und Kleinschreibung oft genug feststellen müssen. Nach einem mir bisher unbekannten System ändert der Editor mal gar keine bis mehrere Befehle bezüglich der Groß- und Kleinschreibung in den Inline-Blöcken. Entscheidend war dabei, ob ich die Datei erstmalig oder zum wiederholten Male in den Editor geladen hatte. Vergleich doch genau den Code wenn er funktioniert und wenn nicht. Sind unterschiede in den Inline-Blöcken vorhanden?
Title: bank-programm spielt verrückt.
Post by: Kitty Hello on 2008-Feb-28
Also, wenn ich's Copy+Paste nehme, gehts bei mir. Hast Du die aktuelle Version?
Title: bank-programm spielt verrückt.
Post by: sechsrad on 2008-Feb-28
glversion 5.148

ich sehe keinen unterschied vom code in der glbasic-ide und die geöffnete mit einem normalen texteditor. gross und kleinschreibung stimmt.

mfg
Title: bank-programm spielt verrückt.
Post by: Kitty Hello on 2008-Feb-28
Aktuell ist 5.179. Bitte Update machen.
Title: bank-programm spielt verrückt.
Post by: sechsrad on 2008-Feb-28
kommt die gleiche fehlermeldung wie bei der vorgängerversion!
erst wenn ich es neu in den ordner kopiere geht es wieder.
mfg
Title: bank-programm spielt verrückt.
Post by: Kitty Hello on 2008-Feb-28
dann kopier den Quelltext,  der Fehler macht nach hier.
Title: bank-programm spielt verrückt.
Post by: sechsrad on 2008-Feb-29
der quelltext ist hier :

Code (glbasic) Select
PRINT "bank erstellen - mousewait",0,150
SHOWSCREEN
MOUSEWAIT

CREATEBANK(0, 100*100)

PRINT "daten einlesen - mousewait",0,160
SHOWSCREEN
MOUSEWAIT

FOR y=0 TO 99
    FOR x=0 TO 99
        POKEBYTE(0, x+(y*10), RND(1))
    NEXT
NEXT

PRINT "daten ausgeben - mousewait",0,170
SHOWSCREEN
MOUSEWAIT

FOR y=0 TO 10
    FOR x=0 TO 10
        PRINT PEEKBYTE(0, x+(y*10)), 20+x*6, 20+y*6
    NEXT
NEXT

PRINT "bank ausgeben und freigegeben - mousewait",0,180
SHOWSCREEN
MOUSEWAIT
FREEBANK(0)

PRINT "ende - mousewait",0,190
SHOWSCREEN
MOUSEWAIT

FUNCTION _foo:
ENDFUNCTION

INLINE
DGArray gMemBanks;
class MemBank_cleaner
{
   public:
   ~MemBank_cleaner()
   {
      FOR(int i=0; i<(int)LEN(gMemBanks); ++i)
         FREEBANK(i);
   }
} gMemBankClean;
ENDINLINE

FUNCTION CREATEBANK: index, memsz
INLINE
if(LEN(gMemBanks) <= index)
   REDIM(gMemBanks, index+1);
   gMemBanks(index) = new unsigned char[(int)memsz];
ENDINLINE
ENDFUNCTION

FUNCTION POKEBYTE: ibank, position, value
INLINE
   gMemBanks(ibank)[(int)position] = (unsigned char)value;
ENDINLINE
ENDFUNCTION

FUNCTION PEEKBYTE: ibank, position
INLINE
   return (DGInt)gMemBanks(ibank)[(int)position];
ENDINLINE
ENDFUNCTION

FUNCTION FREEBANK: ibank
INLINE
   if(gMemBanks(ibank))
   {
      delete[] gMemBanks(ibank);
      gMemBanks(ibank) = 0L;
   }
ENDINLINE
ENDFUNCTION