Hey,
Ik ben nog een beginnende C/C++'er en bedacht dat het een leuke oefening is om structs, klassen, I/O etc. onder de knie te krijgen door een DOS applicatie te schrijven voor het beheren van addressen.
Nou wil ik die vergrendelen dus schrijf ik een login systeem. Al gauw kwam ik met het volgende probleem:
Ik vraag bij het inloggen op gebruikersnaam en wachtwoord. Echter heb ik de code voor het ophalen (en opslaan) nog niet gemaakt. Vanwege dat heb ik het zo gemaakt; als de gebruikersnaam is opgegeven en het systeem erachter komt er geen gebruikers in de database zijn krijg je een melding dat er geen gebruikers zijn en je kan je nog een wachtwoord kan invullen. Indien het wachtwoord is ingevuld word er gevraagd of de gebruiker dit account wilt aanmaken. Hier valt y of n voor op te geven. Indien n word opgegeven word er gevraagd voor opnieuw proberen (Als ik daar dus ook n op geef laat ik het programma afsluiten). Indien ik y opgeef doet het nog niks (en laat ik het programma afsluiten). De resultaten van de vragen waar de gebruiker y of n op kan antwoorden worden in een string opgeslagen en met cin >> variable gedaan.
Nu is het probleem: In beide gevallen als ik het programma laat afsluiten crasht het programma. Ik krijg wel scherm van Just in time debugger van Visual studio maar ik heb het gecompiled met Dev-Cpp 4.9.8.0 (en anders wel MSYS/MinGW) en zit er blijkbaar geen debug informatie bij (en anders zeurt visual studio om: No sourcefile). In beide gevallen krijg ik een crash. En in Visual studio (2005) krijg ik zelfs hem niet eens aan het compilen omdat raar genoeg de libraries van visual studio ervan foute syntax hebben (net een clean install)
en krijg ik +/- 300 - 400 errors.
Omdat Visual de source niet heeft kan ik niet kijken waar de fout optreed. Daarom plaats ik min probleem hier. Omdat de sourcecode inmiddels al >300 regels is heb ik maar even de sourcecode op een SVN server gezet:
https://opensvn.csie.org/...wser/addressManager/trunk
Legenda wat er per bestand zit:
addressManager.h: -empty-
addressMaganger.c: Basis van het progamma. Volgens mij hoort dit te werken, natuurlijk kan je het checken want zoveel ervaring met C++ heb ik ook weer niet
auth.h: Hierin word de klasse loginSession gedefineerd. Deze bevat dus o.a. het afhandelen van het login form
auth.c: Hier in staat de code voor het login form. Functie is: doLoginForm op regel 44.
io.c: Wat replica's van print() functie
io.h: Definitie's van de replica's van print() functie
user.c: Bevat code voor de klasse usersRoot die verantwoordelijk is voor het listen van gebruikers (nog niet werkend; slechts hard ingeprogrammeerde voorbeelden gebruikt. Momenteel: geen gebruikers)
user.h Definitie voor de klasse usersRoot.
Ik heb ook op het forum zitten zoeken natuurlijk. Daar sprak met over iets van dat het type niet kan worden geconverteerd. Daar sprak men meer over ints en dat de enter er niet bij hoort dus crash. Ik gebruikte eerst char voor de N en Y opgaves maar had zelf nog uitbugt dat dat string moet zijn. Het werkte toen ff en nu niet meer
.
Iemand een oplossing voor deze beginnende C/C++'er in nood ?
Ik ben nog een beginnende C/C++'er en bedacht dat het een leuke oefening is om structs, klassen, I/O etc. onder de knie te krijgen door een DOS applicatie te schrijven voor het beheren van addressen.
Nou wil ik die vergrendelen dus schrijf ik een login systeem. Al gauw kwam ik met het volgende probleem:
Ik vraag bij het inloggen op gebruikersnaam en wachtwoord. Echter heb ik de code voor het ophalen (en opslaan) nog niet gemaakt. Vanwege dat heb ik het zo gemaakt; als de gebruikersnaam is opgegeven en het systeem erachter komt er geen gebruikers in de database zijn krijg je een melding dat er geen gebruikers zijn en je kan je nog een wachtwoord kan invullen. Indien het wachtwoord is ingevuld word er gevraagd of de gebruiker dit account wilt aanmaken. Hier valt y of n voor op te geven. Indien n word opgegeven word er gevraagd voor opnieuw proberen (Als ik daar dus ook n op geef laat ik het programma afsluiten). Indien ik y opgeef doet het nog niks (en laat ik het programma afsluiten). De resultaten van de vragen waar de gebruiker y of n op kan antwoorden worden in een string opgeslagen en met cin >> variable gedaan.
Nu is het probleem: In beide gevallen als ik het programma laat afsluiten crasht het programma. Ik krijg wel scherm van Just in time debugger van Visual studio maar ik heb het gecompiled met Dev-Cpp 4.9.8.0 (en anders wel MSYS/MinGW) en zit er blijkbaar geen debug informatie bij (en anders zeurt visual studio om: No sourcefile). In beide gevallen krijg ik een crash. En in Visual studio (2005) krijg ik zelfs hem niet eens aan het compilen omdat raar genoeg de libraries van visual studio ervan foute syntax hebben (net een clean install)
Omdat Visual de source niet heeft kan ik niet kijken waar de fout optreed. Daarom plaats ik min probleem hier. Omdat de sourcecode inmiddels al >300 regels is heb ik maar even de sourcecode op een SVN server gezet:
https://opensvn.csie.org/...wser/addressManager/trunk
Legenda wat er per bestand zit:
addressManager.h: -empty-
addressMaganger.c: Basis van het progamma. Volgens mij hoort dit te werken, natuurlijk kan je het checken want zoveel ervaring met C++ heb ik ook weer niet
auth.h: Hierin word de klasse loginSession gedefineerd. Deze bevat dus o.a. het afhandelen van het login form
auth.c: Hier in staat de code voor het login form. Functie is: doLoginForm op regel 44.
io.c: Wat replica's van print() functie
io.h: Definitie's van de replica's van print() functie
user.c: Bevat code voor de klasse usersRoot die verantwoordelijk is voor het listen van gebruikers (nog niet werkend; slechts hard ingeprogrammeerde voorbeelden gebruikt. Momenteel: geen gebruikers)
user.h Definitie voor de klasse usersRoot.
Ik heb ook op het forum zitten zoeken natuurlijk. Daar sprak met over iets van dat het type niet kan worden geconverteerd. Daar sprak men meer over ints en dat de enter er niet bij hoort dus crash. Ik gebruikte eerst char voor de N en Y opgaves maar had zelf nog uitbugt dat dat string moet zijn. Het werkte toen ff en nu niet meer
Iemand een oplossing voor deze beginnende C/C++'er in nood ?
[ Voor 9% gewijzigd door Hans1990 op 05-01-2006 21:55 ]
Hier begin je simpel met een User die een wachtwoord en een naam kan hebben. De naam en het wachtwoord zijn aan te passen door middel van de getters (accessors) en setters (mutators). Hierdoor kunnen gebruikers worden gemaakt en opgevraagd