Ongelmia tietuerakenteen kanssa

Elikkä olen tekemässä CD-tietokantaa c -kielellä, ja olen vielä melko aloittelija sen kanssa. Ohjelma, jolla koodaan on Microsoft Visual Net Studio 2003.

Joka tapauksessa käyttäessäni tietuerakennetta tallentamisessa käy minulle niin, että jos tietueeni kysyy enemmän kuin kaksi tietoa, ohjelma hyppää sattumanvaraisesti kyselykenttien yli ja pahimmillaan suorittaa ohjelman siten, ettei minulla ole mitään mahdollisuutta tallentaa CD:n tietoja (nimeä, esittäjää, kappaleita...). Olen viettänyt aikaani jo usean viikon ajan ongelman parissa ja ohjelman koodi on hyvin pitkälle samanlainen kuin Päivi Hietasen kirjan esimerkeissä.

Voisiko joku kenties kertoa mistä on kysymys ja miten ongelman voisi korjata? Kyseessä on koulutyö, joten apu olisi kipeästi kaivattua.
11599
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

>>Voisiko joku kenties kertoa mistä on kysymys ja miten ongelman voisi korjata?>>

Ohjelmassasi on virheitä. Ne pitäisi löytää ja muuttaa lähdekoodi niiltä osin korrektiksi.

Jos et itse löydä virheitäsi, voit esimerkiksi näyttää koodiasi jollekin ja pyytää häntä etsimään ne. Jotkin oppilaitokset tarjoavat apua ja ohjausta näissä asioissa. Kannattaa kysyä koulultasi, onko siellä joku joka voisi auttaa.

Äänestä
  • Virheitä siinä kai voi olla, mutta ei kovin tavanomaisia, sanoisin. Ohjelma muuten pyörii hyvin, vain tietuerakenne pahasti mättää. Olen yrittänyt ruudunpysäytyskomentoja, poistanut mahd. häiritseviä muita toimintoja jne., ja sama perusongelma edelleen on. Vertailua olen tehnyt myös kolmen eri opaskirjan kanssa. Eräs henkilö, jonka kanssa keskustelin ongelmasta, epäili toistorakennetta mutta sitäkin ilman tulin kokeilleeksi, ja sama ongelma tuli. Eli se, mitä haluan tietää, on tuleeko kyseisen kääntäjän kanssa yleensä ongelmia tai milloin yleensä tulee vastaavanlainen error.

    Koulu lienee seuraava vaihtoehto jos täältä ei löydy minkäänlaista apua.

    Äänestä

  • Tulossa hulluksi hiljalleen kirjoitti:

    Virheitä siinä kai voi olla, mutta ei kovin tavanomaisia, sanoisin. Ohjelma muuten pyörii hyvin, vain tietuerakenne pahasti mättää. Olen yrittänyt ruudunpysäytyskomentoja, poistanut mahd. häiritseviä muita toimintoja jne., ja sama perusongelma edelleen on. Vertailua olen tehnyt myös kolmen eri opaskirjan kanssa. Eräs henkilö, jonka kanssa keskustelin ongelmasta, epäili toistorakennetta mutta sitäkin ilman tulin kokeilleeksi, ja sama ongelma tuli. Eli se, mitä haluan tietää, on tuleeko kyseisen kääntäjän kanssa yleensä ongelmia tai milloin yleensä tulee vastaavanlainen error.

    Koulu lienee seuraava vaihtoehto jos täältä ei löydy minkäänlaista apua.

    >>Virheitä siinä kai voi olla, mutta ei kovin tavanomaisia, sanoisin.>>

    Päinvastoin, ne kuulostavat hyvin tavanomaisilta.

    >>Eli se, mitä haluan tietää, on tuleeko kyseisen kääntäjän kanssa yleensä ongelmia tai milloin yleensä tulee vastaavanlainen error.>>

    Kääntäjää käytetään monessa paikassa toimivan tuotantokoodin tekemiseen. Vika on sinun omassa ohjelmassasi. Järki käteen ja vikaa etsimään.

    Näin lähdekoodia tarkemmin näkemättä voin arvata, että viat voivat löytyä rivien 1 ja N väliltä, missä N on ohjelmasi pituus riveissä.

    Äänestä

Olisehan se helpompaa auttaa jos näyttäisit ohjelmasi lähdekoodin, kaikilla kun ei satu olemaan Päivi Hietasen kirjaa ja tuosta sun ongelman kuvauksesta ei paljon irtoa.

Äänestä

Sinullahan on maailman paras ohjelmien kehitysympäristö, joten käytä sitä hyväksi!

Äänestä
  • >...maailman paras ohjelmien kehitysympäristö...

    Dotnetti vs vai? :)

    Miksiköhän se sitten on niin harvojen käytössä?

    Äänestä

  • parasta? kirjoitti:

    >...maailman paras ohjelmien kehitysympäristö...

    Dotnetti vs vai? :)

    Miksiköhän se sitten on niin harvojen käytössä?

    on perseestä ... studio 6 onihan ok vieläkuiteski jos nyt mikkiksen ns. "käyttöjärjestelmään" jotain haluaa väsätä :D:D

    Äänestä

debug debug debug?????

Äänestä

Ensin tarvisi tietää kanava mille viritän kristallipalloni. Muuten ei voi auttaa.

Kerro nyt ystävä hyvä hieman enemmän mitä teet ja miten. Auttaminen on mahdotonta näillä tiedoilla. Mitä olet tehnyt? Miten? Mitä haluat tehdä? Minkälaisia tietueita käytät? Miten käytät niitä? Miten ongelma *tarkalleen* ilmenee? Mitä olet yrittänyt? Koodia näkyviin oleellisilta osilta.

Voin sanoa, että 99.9999% todennäköisyydellä vika on koodissasi vaikka et sitä itse löydäkään.

Äänestä

Veikkaisin kuitenkin että kyseessä on muistinhallintavirhe:

int *pointeri; //osoitin isoon muistialueeseen

pointeri = malloc(1000*sizeof(int)); //varataan tilaa itse muistialueelle

pointteri[999] = 1234; //kirjoitetaan muistialueeseen

Jos jätät keskimmäisen lauseen (muistinvaraus) pois, et saa mitään virheilmoitusta mutta kirjoitat jonkun toisen datan päälle jolloin se tuhoutuu. Samoin tapahtuu jos kirjoitat muistialueen ulkopuolelle;

pointteri[1000]=1234;

Myös indeksien kanssa pitää olla tarkka (helposti unohtaa että c:ssä indeksi alkaa nollasta).

Aina kun varaa muistia pitää myös varmistaa että varaus todella onnistui (esim if-lauseella tai TRY-CATCH-ENDTRY rakenteella)

Opi käyttämään debuggeria: Sillä voit pysäyttää ohjelman mille ohjelmariville tahansa (breakpoin) ja tutkia eri muuttujien sisältöä. Aseta pysähdyskohta sellaiseen paikkaan joka on mahdollisen lähellä virhekohtaa mutta kuitenkin ennen virhettä; sitten etenet rivi kellalla ja tutkit muuttujia kunnes paikallistat virheen.

Äänestä

Kommentoi aloitusta


Tulossa hulluksi hiljalleen kirjoitti:

Elikkä olen tekemässä CD-tietokantaa c -kielellä, ja olen vielä melko aloittelija sen kanssa. Ohjelma, jolla koodaan on Microsoft Visual Net Studio 2003.

Joka tapauksessa käyttäessäni tietuerakennetta tallentamisessa käy minulle niin, että jos tietueeni kysyy enemmän kuin kaksi tietoa, ohjelma hyppää sattumanvaraisesti kyselykenttien yli ja pahimmillaan suorittaa ohjelman siten, ettei minulla ole mitään mahdollisuutta tallentaa CD:n tietoja (nimeä, esittäjää, kappaleita...). Olen viettänyt aikaani jo usean viikon ajan ongelman parissa ja ohjelman koodi on hyvin pitkälle samanlainen kuin Päivi Hietasen kirjan esimerkeissä.

Voisiko joku kenties kertoa mistä on kysymys ja miten ongelman voisi korjata? Kyseessä on koulutyö, joten apu olisi kipeästi kaivattua.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu