fstream
-
Ich kann hier keinen Fehler finden. Bei mir funktioniert das.
-
bei mir aber nicht, ich nutze BcB 6. Bei mir legt der immer wieder nur eine leere Datei an.
int main(int argc, char* argv[])
{
if(encrypt("test.txt", "h.txt", 2))
std::cout << "Error";
else
std::cout << "Success";std::cin.get();
return 0;
}
-
wird zwar ein Success ausgeben aber sonst tut sich nichts.
Ich bin so nicht der BCB Fan, muss ihn aber leider fürs die Schule nutzen.
-
irendwie zeigt der nur success an, auch wenn die source datei nicht existert...
Langsam verzweifel ich
-
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.