Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: LPSTR --> CHAR*

jcd3nton [21.08.2004 20:55:59]

#

Mitenkä tuollainen muunnos tapahtuu, eli tuon LPSTR:n osoittamat merkit kopioidaan CHAR taulukkoon?

Metabolix [21.08.2004 21:49:10]

#

Olisit jatkanut samaa aihetta vaan...
typedef char *LPSTR;
Eli LPSTR on char-taulukko; sitä ei tarvitse muuttaa.

jcd3nton [21.08.2004 21:59:58]

#

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...?

Metabolix [21.08.2004 22:21:11]

#

Alustatko tuon Arguments-muuttujan?

Arguments = new char[100][100];

Kannattaa tehdä suunnilleen näin:

  1. 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.

  2. 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.

  3. Luo taulukko:

    Arguments = new (char*)[Maara];
    for (int a = 0; a < Maara; a++) Argumerts[a] = new char[Pituus[a]];
  4. Muista tuhota lopuksi (varmaankin näin):

    for (int a = 0; a < Maara; a++) delete [] Arguments;
    delete Arguments;

Jokohan kohta alkaa toimia :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta