fstream



  • Hallo,

    Was ist denn jetzt wieder dieses encrypt? Das gleiche wie convert? Am BCB liegt das hier mit Sicherheit nicht.

    Stop!!
    Mach mal ein ! vor das encrypt.



  • //---------------------------------------------------------------------------
    
    #pragma hdrstop
    
    #include <iostream>
    #include <Windows.h>
    #include <fstream>
    
    bool encrypt(const char* source, const char* destination, unsigned long key)
    {
       if(!source || !destination)
          return(false);
    
       std::fstream         sFile(source,      std::ios::in);
       std::fstream         dFile(destination, std::ios::out | std::ios::app);
       unsigned long        bufferSize      = 0;
       char*                buffer          = 0;
    
          // source file dosn't exist?
       if(!sFile.is_open())
          return(false);
    
          // destination file exist?
       if(dFile.is_open())
          return(false);
    
       //   // destionation file dosn't exist, just open or create a file
       //dFile.close();
       //dFile.open(destination, std::ios::out | std::ios::app);
    
          // it is time to find out the lenght of the file
        sFile.seekg(0, std::ios_base::end);
        bufferSize = std::streamoff(sFile.tellg());
        sFile.seekg(0, std::ios_base::beg);
    
          // allocate the buffer
       buffer = new char[bufferSize + 1];
    
       sFile.read(buffer, bufferSize);
       buffer[bufferSize] = '\0';
    
       std::cout << bufferSize;
       std::cout << buffer;
    
       dFile.write(buffer, bufferSize);
    
          // !!!!!!
       delete[] buffer;
       buffer = 0;
    
       return(true);
    }
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
       if(encrypt("a.txt", "h.txt", 2) == true)
          std::cout << "Error";
       else
          std::cout << "Success";
    
       std::cin.get();
    
      return 0;
    }
    //---------------------------------------------------------------------------
    


  • oder so 😉

    #pragma argsused
    int main(int argc, char* argv[])
    {
       if(encrypt("a.txt", "h.txt", 2) == true)
          std::cout << "Success";
       else
          std::cout << "Error";
    
       std::cin.get();
    
      return 0;
    }
    //---------------------------------------------------------------------------
    


  • Ich hatte die Funktion nur erst convert genannt, da sie noch nicht fertig ist und damit es nicht zu Verwirrung führt.

    Dein Download-Link #1: http://rapidshare.de/files/33710336/Crypth.rar.html
    Dein Lösch-Link #1: http://rapidshare.de/files/33710336/Crypth.rar?killcode=1577951015



  • Ich habe gerade etwas zu viel von meinen Projektdateien gelöscht, aber ich hatte eine Konsolenexperten Anwendung genommen(ohne den ganzen Schnickschnak, nur C++)



  • Braunstein schrieb:

    Hallo,

    Was ist denn jetzt wieder dieses encrypt? Das gleiche wie convert? Am BCB liegt das hier mit Sicherheit nicht.

    Stop!!
    Mach mal ein ! vor das encrypt.

    Dumemr Schusselfehler, nun kommt aber trotzdem immer eine Error Meldung



  • Das Problem ist das hier

    if(dFile.is_open())
       return(false);
    

    Da du die Ausgabedatei vorher öffnest, ist sie an dieser Stelle immer offen und das Ergebnis somit false. Lösch das da einfach oder mach auch hier ein ! davor.



  • Ok, aber jetzt gibt es schion wieder ein neues Problem...

    bool encrypt(const char* source, const char* destination, unsigned long key)
    {
       if(!source || !destination)
          return(false);
    
       std::fstream         sFile(source,      std::ios::in);
       std::fstream         dFile(destination, std::ios::out | std::ios::trunc);
       unsigned long        bufferSize      = 0;
       char*                buffer          = 0;
    
          // source file dosn't exist?
       if(!sFile.is_open())
          return(false);
    
          // it is time to find out the lenght of the file
        sFile.seekg(0, std::ios_base::end);
        bufferSize = std::streamoff(sFile.tellg());
        sFile.seekg(0, std::ios_base::beg);
    
          // allocate the buffer
       buffer = new char[bufferSize];
    
       sFile.read(buffer, bufferSize);
       buffer[bufferSize] = '\0';
    
       dFile.write(buffer, bufferSize);
    
       sFile.close();
       dFile.close();
    
       delete[] buffer;
       buffer = 0;
    
       return(true);
    }
    

    Ich mit der Funktion(wo bis jetzt noch kein verschlüsselungsalgorithmus implentiert ist) mal eine 23Kb große exe Datei "umgewandelt"

    also:

    encrypt("test.exe", a.exe", 3);
    

    --> jedoch war die neue exe um ein paar bites größer und konnte sich nicht mehr öffnen lassen, warum? das gleiche istmir bei einem txt file passiert, was über 5K groß war...



  • Hat keiner eine Idee? Ich wäre über eine Antwort sehr dankbar, denn langsam verzweifel ich...

    Ich muss noch zwei Fehler korrigieren...

    encrypt("test.exe", "a.exe", 3);
    
    ...
          // allocate the buffer
       buffer = new char[bufferSize + 1]; ////////// + 1!!!!!!!!!
    
       sFile.read(buffer, bufferSize);
       buffer[bufferSize] = '\0';
    
    ...
    


  • hlkhg schrieb:

    --> jedoch war die neue exe um ein paar bites größer und konnte sich nicht mehr öffnen lassen, warum? das gleiche istmir bei einem txt file passiert, was über 5K groß war...

    Du must ios::binary verwenden ! Bei großen Dateien must du auch noch eine Schleife mit reinbringen.

    P.S. Warum übergibst du ein Argument "key" das du nie verwendest ?



  • WoWe schrieb:

    hlkhg schrieb:

    --> jedoch war die neue exe um ein paar bites größer und konnte sich nicht mehr öffnen lassen, warum? das gleiche istmir bei einem txt file passiert, was über 5K groß war...

    Du must ios::binary verwenden ! Bei großen Dateien must du auch noch eine Schleife mit reinbringen.

    P.S. Warum übergibst du ein Argument "key" das du nie verwendest ?

    Das mit dem ios::binary erscheint mir logisch, aber was meinst du mit der Schleife?

    Der Key kommt noch, ich brauche aber ersteinmal ein funtionierendes Grundgerüst für die Funktion.


Anmelden zum Antworten