OK then...
Once the objektnamen text is filled wih filenames, do you 'keep' it in memory, or do you purge it?
BECAUSE, if you keep it, you can simply replace
typedef struct
{
...
char* objektname; //The name of the Block
char* filename; //The filename of the Block
char* setupname; //The filename of the PAK file of the Block
char* contentname; //The name of the WRS file the block is located in
ENTITY* obj; //The Block object itself
} BLOCK;
with
typedef struct
{
...
int objektname_idx; //Index of the name of the Block
int filename_idx; //Index of the filename of the Block
int setupname_idx; //Index of the filename of the PAK file of the Block
int contentname_idx; //Index of the name of the WRS file the block is located in
ENTITY* obj; //The Block object itself
} BLOCK;
And instead of storing a whole char array for every block, you now only need to store the
line-number/index-number of its entry within the objektnamen array.
Have I made myself clear? Or is further explaination needed?