Code:
#define MYRAND (u_int)GetTickCount()
...
u_char rndstring[11];
create_rand_string(MYRAND, rndstring, sizeof(rndstring) - 1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
Code:
u_char *create_rand_string(u_int seed, u_char *data, int len, u_char *table) {
int tablelen = strlen(table);
u_char *p = data;
while(--len) {
seed = (seed * 0x343FD) + 0x269EC3;
*p++ = table[seed % tablelen];
}
*p = 0;
return(data);
}
Der Code funktioniert wie gesagt im usprünglichen Programm einwandfrei und lässt sich auch compilieren - die Definition von 'u_char' ist aber nirgendwo zu finden.
Für mich ebenfalls gänzlich unerklärlich ist, wohin 'data' zurückgegeben wird. Augenscheinlich an die Funktion selbst, im späteren Programmablauf wird allerdings die Variable 'rndstring' für die weitere Verarbeitung verwendet.
Ich bin im übrigen nicht gezwungen bei C++ zu bleiben. Ursprünglich wollte ich Teile des Codings nach VB6 portieren, da meine VB Kenntnisse doch ganz passabel sind. Probleme hatte ich allerdings beim Verstehen des C++ Syntax - ich hab mich daher dazu entschlossen gleich bei C++ zu bleiben und mich entsprechend einzuarbeiten. Schadet ja nicht, eine weitere Programmiersprache zu können
//EDIT
Ich hab das Problem gelöst bekommen. Es lag, wie sollts auch anders sein, am fehlenden Wissen bzgl. der C++ Syntax meinerseits... Beim Implementieren der Funktion in mein Coding hab ich ein kleines '*' vergessen. Musste also so aussehen:
u_char* _stdcall meinefunktion(u_char *rndstring) {
...
}