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
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
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?
Also, wenn ich's Copy+Paste nehme, gehts bei mir. Hast Du die aktuelle Version?
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
Aktuell ist 5.179. Bitte Update machen.
kommt die gleiche fehlermeldung wie bei der vorgängerversion!
erst wenn ich es neu in den ordner kopiere geht es wieder.
mfg
dann kopier den Quelltext, der Fehler macht nach hier.
der quelltext ist hier :
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