Programm speichert/lädt die Daten nicht...



  • ich speichere darauf wo das Programm drauf ist, in meinem fall festplatte



  • NTL1 schrieb:

    Wenn du auf Diskette speicherst unbedingt überprüfen ob der Schreibschutz nicht aktiv ist.

    Vor ca. 15 Jahren wäre diese Antwort gut gewesen.

    Yazoo schrieb:

    ich speichere darauf wo das Programm drauf ist, in meinem fall festplatte

    Werden die Dateien erstellt? Schon mal debuggt?



  • Naja, hätte ja sein können das du Disketten verwendest. Vielleicht mal DOS/Windows neu aufsetzen bzw. vorher mal einfach den Computer neu starten. Könnte sein das du einen Bug im Computer hast oder einen Trojaner übers Netzwerk eingefangen hast.



  • die datei wird in jedem fall neu erstellt, da ich der open funktion von fstream den parameter ios::trunc gegeben habe.
    debbugt habe ich auch schon hat nichts gebracht, es ist kein erkennbarer code fehler meine einzige idee ist, dass ich die write bzw read funktionen falsch benutze, wüsste aber nicht wodurch



  • liegt es villeicht an dem & ? müsste das nicht ohne & sein? es handelt sich ja um eine array also würde ich sagen entweder &array[0] oder nur array aber nicht &array. alle angaben ohne gewähr 🙂



  • du kannst std::string member nicht so speichern, weil der eigentliche Text nicht in der Struktur ist, sondern im Heap. Du musst also die Daten der Member einzein rausschreiebn.



  • NTL1 schrieb:

    Naja, hätte ja sein können das du Disketten verwendest. Vielleicht mal DOS/Windows neu aufsetzen bzw. vorher mal einfach den Computer neu starten. Könnte sein das du einen Bug im Computer hast oder einen Trojaner übers Netzwerk eingefangen hast.

    Am besten den Computer mal in die Spülmaschine stellen, damit er richtig sauber ist



  • NTL1 schrieb:

    Naja, hätte ja sein können das du Disketten verwendest. Vielleicht mal DOS/Windows neu aufsetzen bzw.

    Ja, mach ich auch immer. Wenn ich ein Programm geschrieben habe, was nicht auf Anhieb läuft, setze ich Windows neu auf.



  • Belli schrieb:

    [...] setze ich Windows neu auf.

    Das mach ich auch immer. Aber mit Disketten. 😃



  • Belli schrieb:

    NTL1 schrieb:

    Naja, hätte ja sein können das du Disketten verwendest. Vielleicht mal DOS/Windows neu aufsetzen bzw.

    Ja, mach ich auch immer. Wenn ich ein Programm geschrieben habe, was nicht auf Anhieb läuft, setze ich Windows neu auf.

    Du auch? Ja vielleicht findet Yazoo ja auch noch die Güte das zu tun, bevor er hier noch mehr seiner Zeit vergeudet.
    Also ersma neu aufsetzen und dann gucken!



  • Hab jetzt Windows neu installiert, jetzt geht wieder alles.



  • Hervorragend!



  • Yasoo schrieb:

    Hab jetzt Windows neu installiert, jetzt geht wieder alles.

    Sehr wizig Yasoo, nur finde ich das gar nicht.

    Ich habe ehrlichgesagt keinen bock windows neu aufzusetzen und außerdem bezweifle ich, dass es daran liegt.

    hehe schrieb:

    du kannst std::string member nicht so speichern, weil der eigentliche Text nicht in der Struktur ist, sondern im Heap. Du musst also die Daten der Member einzein rausschreiebn.

    Das klingt nicht schlecht, funktioniert aber nicht... jedenfalls wenn ich das richtig verstanden habe.

    hier der aktuelle code:

    bool Key::Save(string sFile)
    {
      bool bGood;
      ofstream ofDatei(sFile.c_str(), ios::binary | ios::trunc);
    
      ofDatei.write((char *) &m_bExist, sizeof(m_bExist));
      ofDatei.write((char *) &m_sName, sizeof(m_sName));
      ofDatei.write((char *) &m_sKey, sizeof(m_sKey));
    
      bGood = ofDatei.good();
    
      ofDatei.close();
      ofDatei.clear();
    
      return bGood;
    }
    
    bool Key::Load(string sFile)
    {
      bool bGood;
      ifstream ifDatei(sFile.c_str(), ios::binary);
    
      ifDatei.read((char *) &m_bExist, sizeof(m_bExist));
      ifDatei.read((char *) &m_sName, sizeof(m_sName));
      ifDatei.read((char *) &m_sKey, sizeof(m_sKey));
    
      bGood = ifDatei.good();
    
      ifDatei.close();
      ifDatei.clear();
    
      return bGood;
    }
    
    int load()
    {
      for(int i = 0; i < MAX_KEYS; i++)
      {
        if(!g_Keys[i].Load("data\\Keys.dat"))
          return ERROR_READ;
      }
    
      return OK;
    }
    
    int save()
    {
      for(int i = 0; i < MAX_KEYS; i++)
      {
        if(!g_Keys[i].Save("data\\Keys.dat"))
          return ERROR_WRITE;
      }
    
      return OK;
    }
    

    die deklaration von der Key Klasse hat sich nicht geändert bis auf das hier:

    // ...
      bool Save(string);
      bool Load(string);
      //...
    

Anmelden zum Antworten