Author Topic: Array of Bytes  (Read 6456 times)

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5014
  • O Rly?
    • View Profile
Array of Bytes
« on: 2008-May-19 »
by GernotFrisch:

Code: GLBasic [Select]
// If this is not a seperate file, you must end the main() function first
FUNCTION _foo:
ENDFUNCTION

// Global variable for storing the bank pointers
INLINE
DGArray<unsigned char*> 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
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 498
    • View Profile
Re: Array of Bytes
« Reply #1 on: 2008-Sep-27 »
Wäre ein ResizeBank auch noch möglich?
Sowas wäre ja auch was fürs nächste große Update, als Integration.
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5014
  • O Rly?
    • View Profile
Re: Array of Bytes
« Reply #2 on: 2008-Sep-27 »
is irgendwie nicht wirklich Basiclike, deshalb wirds auch nur ein Inline bleiben ;)
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 498
    • View Profile
Re: Array of Bytes
« Reply #3 on: 2008-Sep-27 »
schade, naja, aber besser als nix.
da wäre aber tatsächlich mal so ein userlibs ordner als standard oder so der übersicht halber net schlecht.
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5014
  • O Rly?
    • View Profile
Re: Array of Bytes
« Reply #4 on: 2008-Sep-28 »
kannste ja machen ;)
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 498
    • View Profile
Re: Array of Bytes
« Reply #5 on: 2008-Sep-28 »
wie das denn, ich mein so einen automatischen ordner, wo die includes abgelegt werden und die dll´s.
okay die muss man dann auch hinterher ins spieleverzeichnis kopieren, aber sonst....

ich denke mal so ein standard userlibs ordner müsste doch von gernot erstellt werden, oder?

also wo automatisch drauf zugegriffen wird, bei bedarf.
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 498
    • View Profile
Re: Array of Bytes
« Reply #6 on: 2009-Mar-08 »
ich hab dazu mal ne frage.
peekbyte und peeklong.

peekbyte% logisch, liest ein byte.
was aber liest peeklong% ?
nur nen integer?
aber in welchem bereich.
bräuchte das in bestimmten bereichen.
readbyte liest ein byte
readword 2 bytes 0-65535 oder so...
was aber liest diesen bereich?   -2147483648   +2147483647
shortieee ?

oder liest das beides das peeklong?
ich mein, wenns kein höherer speicherverbrauch ist, welcher zu berücksichtigen wäre, ists ja wurscht.
bitte um ne kurze erklärung.
« Last Edit: 2009-Mar-08 by Heiko »
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Moru

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1774
    • View Profile
    • Homepage
Re: Array of Bytes
« Reply #7 on: 2009-Mar-08 »
byte = 1 unit
word or short = 2 units
long = 4 units

When you want a word you peekbyte two bytes after eachothers and put them together, one you multiply with 256.

With long you do the same but get 4 bytes, each time multiply with 256 more (0x100, 0x10000, 0x1000000) to move it to the right position.

Hope this is what you asked about, I don't know much german but have a little spare time :-)

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 498
    • View Profile
Re: Array of Bytes
« Reply #8 on: 2009-Mar-08 »
i need READanycommand -2147483648  -  +2147483647
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Moru

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1774
    • View Profile
    • Homepage
Re: Array of Bytes
« Reply #9 on: 2009-Mar-08 »
That is a long wich is 4 bytes and you want it signed. Since this is the default in GLBasic you don't need any databank, just use a normal array.

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 498
    • View Profile
Re: Array of Bytes
« Reply #10 on: 2009-Mar-08 »
so ists just a READLONG.

yes i see thats the wrong section for asking that.......i´m confused cause its to late today....
Ryzen 5 2400G - MSI B450 Tomahawk