Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » class password

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.02.2008, 14:35 Uhr
~schaich
Gast


Hey Leute,

ich hab ein kleines Programm geschrieben, das, wenn es ausgeführt wird, eine eingabe fordert, die ich als passwort bezeichne.
Im zweiten Durchgang überprüft das Programm,ob es schon ein Passwort gibt und sollte die Eingabe des vorher eingegebenen verlangen. Leider erkennt mein Programm nicht, dass ich beim ersten Durchlauf schon etwas eingegeben habe und ich muss immerwieder ein "neues" passwort eingeben...
kann mir einer helfen??

Danke schonmal

MfG schaich

Quelltext:



Code:
#include <iostream>
#include <string>
using namespace std;
class Password{
      
      private:      
      string currentPw;
      static int counter;
      
      public:      
      void setPw(string);
      string getPw();
};

int Password::counter = 0;
void run();
      
int main()
{
  
   run();  
   return 0;
   std::cin.get();
}

void run(){
    
   Password password;
   string newPw;
  
   cout<<"altes Passwort: "<<password.getPw()<<endl;
   cout<<"Bitte das neue Passwort eingeben\n";
   cin>>newPw;
  
   password.setPw(newPw);
  
   std::cin.get();
  
}

void Password::setPw(string newPw){
   cout<<"Neuer Aufruf"<<endl;
  
  if(currentPw.empty()){
        
     currentPw = newPw;    
     run();
     std::cin.get();
          
  }else{
  
     string eingabe;
     cout<<"Bitte das alte Passwort eingeben"<<endl;
     cin>>eingabe;
      
      
     std::cin.get();
      
     if(eingabe == currentPw){
          
       currentPw = newPw;      
       cout<<"Passwort geändert";
        
        
       std::cin.get();
        
     }else if(counter<3){
        
       counter++;
       cout<<"Falsches Passwort \nSie haben noch "<<3-counter<<" Versuche"<<endl;
        
       run();
    
       std::cin.get();
          
        
     }else{
      
       cout<<"Programm gesperrt\n";
      
       std::cin.get();  
     }
    
        
   }
}

string Password::getPw(){
    return currentPw;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.02.2008, 14:56 Uhr
xXx
Devil


hattest das selbe schon in nem anderen forum gepostet ... crossposting => keine antwort!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2008, 15:16 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von xXx:
hattest das selbe schon in nem anderen forum gepostet ... crossposting => keine antwort!

wo denn? ich habs jetzt hier nirgendwo gesehen

@schaich
Wenn ich dich richtig verstanden habe willst du das wenn du das Programm wieder neu startest er weiß welches Passwort beim ersten mal eingegeben wurde. Dann musst du dir das natürlich irgendwo (zum Beispiel in einer Datei) merken und wieder auslesen. Woher sollte das Programm das sonst wissen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.02.2008, 15:22 Uhr
~schaich
Gast


nein das programm läuft durch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.02.2008, 15:45 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Achso jetzt hab ich auch mal drüber geschaut und dein Problem auch direkt gesehen. Du hast da nämlich ein ziemlich ekliges Design was auch dein Problem verursacht.

In setPw ruftst du wenn noch kein Passwort gesetzt war run() wieder auf. Das heißt in run wird wieder eine neue Instanz von Passwort erstellt welche wieder für sich setPw aufruft und ja noch gar kein Passwort hat. Das Ganze dann natürlich immer so weiter.

Das kannst du so natürlich nicht machen. Du musst in deiner run Funktion eine Schleife um den Teil machen der immer wieder ausgeführt werden soll und deine Klasse darf run nicht aufrufen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.02.2008, 16:32 Uhr
~schaich
Gast


Ahhhhhhhhhhh
Danke ist mir gar nicht aufgefallen^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.02.2008, 11:35 Uhr
~schaich
Gast


Hallo nochmal ich hab jetzt versucht das Passwort in einer Textdatei zu speichern und beim nächsten Ausführen wieder auszulesen.
Allerdings klappt das Auslesen nicht so wie ich das will...
Ich kann die Variable currentPw aus der Klasse Password nicht überschreiben..
Wie kann ich denn auf diese Variable zugreifen innerhalb einer Methode??

also z.b.


C++:
void Passwortabfrage(){

  source.open("Passwort.txt", ios::in);
  source>> string Password::currentPw;  //Hier ist das Problem....
  source.close();                        
  
  
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.02.2008, 16:31 Uhr
öni



Du kannst auf private Variablen nur über Methoden drauf zugreifen die in der selben Klasse sind oder von dieser Klasse erbten. Was mach denn z.B. deine Methode getPw()?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: