bank-programm spielt verrückt.

Previous topic - Next topic

sechsrad

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

S.O.P.M.

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?
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kitty Hello

Also, wenn ich's Copy+Paste nehme, gehts bei mir. Hast Du die aktuelle Version?

sechsrad

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

Kitty Hello

Aktuell ist 5.179. Bitte Update machen.

sechsrad

kommt die gleiche fehlermeldung wie bei der vorgängerversion!
erst wenn ich es neu in den ordner kopiere geht es wieder.
mfg

Kitty Hello

dann kopier den Quelltext,  der Fehler macht nach hier.

sechsrad

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