Mitenkä tuollainen muunnos tapahtuu, eli tuon LPSTR:n osoittamat merkit kopioidaan CHAR taulukkoon?
Olisit jatkanut samaa aihetta vaan...
typedef char *LPSTR;
Eli LPSTR on char-taulukko; sitä ei tarvitse muuttaa.
Hmm... eikö vika sitten olekaan tuossa...
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR cmdArgs, INT) { ... ToDo = GetArgumentAction(cmdArgs); ... } INT GetArgumentAction(LPSTR cmdArguments) { ... CHAR** Arguments = NULL; ... Arguments[0][0] = cmdArguments[0]; /* Ja tässä ohjelma suorittaa laittoman toiminnon */ ... }
Mistähän se vika sitten ilmestyy...?
Alustatko tuon Arguments-muuttujan?
Arguments = new char[100][100];
Kannattaa tehdä suunnilleen näin:
Laske montako argumenttia löytyy, siis esim. käyt koko cmdArgsin läpi kunnes tulee \0 ja lasket montako väliä löytyy. Esim: "Jee Jee Jee"; löytyy kaksi väliä, joten argumentteja on kolme.
Laske (vaikka samaan aikaan), montako merkkiä kussakin on. Esim: "Minä olen Metabolix", jolloin
int Pituus[Maara]; Pituus[0] = 5; Pituus[1] = 5; Pituus[2] = 10;
Muista, että jokaisessa pitää olla lopussa ylimääräinen, johon tulee \0.
Luo taulukko:
Arguments = new (char*)[Maara]; for (int a = 0; a < Maara; a++) Argumerts[a] = new char[Pituus[a]];
Muista tuhota lopuksi (varmaankin näin):
for (int a = 0; a < Maara; a++) delete [] Arguments; delete Arguments;
Jokohan kohta alkaa toimia :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.