datei löschen
-
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/deletefile.asp
Und was lesen wir da?
If the function fails, the return value is 0 (zero). To get extended error information, call GetLastError.
Und was kommt bei raus?
Und warum nicht WinAPI Forum?
-
klappt leider auch mit remove nicht: Denke ebend wie gesagt es liegt daran dass der File nicht geschlossen ist. Aber warum file.close() schließt doch die damit geöffnete Datei.
gebe einfach mal den ganzen Code der Funktion, vielleicht sieht ja jemand woran es liegt. Habe mal alles markiert wo ich denke, dass es für das Problem wichtig ist.
Datei= fopen("c:\\zwischen.txt","r"); ////// std::ofstream file2; ////// file2.open("c:\\zwischen2.txt"); ////// memset(abd,0,9); memset(buffer1,0,100); i=-1;i2=-1;merker=0;merker2=0; float test=zwischen1; while(1) { i=i +1; i2=i2+1; cRead=fgetc(Datei); if(feof(Datei)) { break; } switch(cRead) { case '0': {abd [i]='0';buffer1[i2]='0'; break;} case '1': {abd [i]='1';buffer1[i2]='1'; break;} case '2': {abd [i]='2';buffer1[i2]='2'; break;} case '3':{ abd [i]='3';buffer1[i2]='3'; break;} case '4':{abd [i]='4';buffer1[i2]='4'; break;} case '5':{ abd [i]='5';buffer1[i2]='5'; break;} case '6':{ abd [i]='6';buffer1[i2]='6'; break;} case '7':{ abd [i]='7';buffer1[i2]='7'; break;} case '8':{ abd [i]='8';buffer1[i2]='8'; break;} case '9':{ abd [i]='9';buffer1[i2]='9'; break;} case '.':{ abd [i]='.';buffer1[i2]='.'; break;} case '\t':{ if (merker==0) { zwischen=atof(abd); merker=1; } buffer1[i2]='\t'; memset(abd,0,9); i=-1; break; } case '\n': { buffer1[i2]='\n'; buffer1[i2+1]=0; if (merker2==0) { zwischen1 = zwischen; merker2=1; } if (zwischen1 !=zwischen) { file2<<buffer1;//////// } memset(buffer1,0,100); memset(abd,0,9); merker=0; i=-1; i2=-1; break; } } } // while Ende fclose(Datei); /////////////////// file2.close; //////////////////// DeleteFile("c:\\zwischen.txt"); /////////////// //DeleteFile("c:\\zwischen2.txt"); //////////////// std::remove("c:\\zwischen2.txt"); ////////////// //CopyFile("c:\\zwischen2.txt", "c:\\zwischen.txt", TRUE); //DeleteFile("c:\\zwischen2.txt");Das seltsame ist dass es bei Datei klappt. Habe überlegt dass zwischen2 von einer anderen Funktion geöffnet ist dem ist aber nicht so
-
also muss an den file.close() liegen er schliesst die Datei nicht und daher kann sie auch nicht gelöscht werden. Weiß nur nicht warum er das nicht macht
-
FireFlow schrieb:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/deletefile.asp
Und was lesen wir da?
If the function fails, the return value is 0 (zero). To get extended error information, call GetLastError.
Und was kommt bei raus?
Und warum nicht WinAPI Forum?
...
-
hmmm,komische Code
-
the daily wtf
-
Oliver1980 schrieb:
klappt leider auch mit remove nicht: Denke ebend wie gesagt es liegt daran dass der File nicht geschlossen ist. Aber warum file.close() schließt doch die damit geöffnete Datei.
gebe einfach mal den ganzen Code der Funktion, vielleicht sieht ja jemand woran es liegt. Habe mal alles markiert wo ich denke, dass es für das Problem wichtig ist.
Datei= fopen("c:\\zwischen.txt","r"); ////// std::ofstream file2; ////// file2.open("c:\\zwischen2.txt"); ////// memset(abd,0,9); memset(buffer1,0,100); i=-1;i2=-1;merker=0;merker2=0; float test=zwischen1; while(1) { i=i +1; i2=i2+1; cRead=fgetc(Datei); if(feof(Datei)) { break; } switch(cRead) { case '0': {abd [i]='0';buffer1[i2]='0'; break;} case '1': {abd [i]='1';buffer1[i2]='1'; break;} case '2': {abd [i]='2';buffer1[i2]='2'; break;} case '3':{ abd [i]='3';buffer1[i2]='3'; break;} case '4':{abd [i]='4';buffer1[i2]='4'; break;} case '5':{ abd [i]='5';buffer1[i2]='5'; break;} case '6':{ abd [i]='6';buffer1[i2]='6'; break;} case '7':{ abd [i]='7';buffer1[i2]='7'; break;} case '8':{ abd [i]='8';buffer1[i2]='8'; break;} case '9':{ abd [i]='9';buffer1[i2]='9'; break;} case '.':{ abd [i]='.';buffer1[i2]='.'; break;} case '\t':{ if (merker==0) { zwischen=atof(abd); merker=1; } buffer1[i2]='\t'; memset(abd,0,9); i=-1; break; } case '\n': { buffer1[i2]='\n'; buffer1[i2+1]=0; if (merker2==0) { zwischen1 = zwischen; merker2=1; } if (zwischen1 !=zwischen) { file2<<buffer1;//////// } memset(buffer1,0,100); memset(abd,0,9); merker=0; i=-1; i2=-1; break; } } } // while Ende fclose(Datei); /////////////////// file2.close; //////////////////// DeleteFile("c:\\zwischen.txt"); /////////////// //DeleteFile("c:\\zwischen2.txt"); //////////////// std::remove("c:\\zwischen2.txt"); ////////////// //CopyFile("c:\\zwischen2.txt", "c:\\zwischen.txt", TRUE); //DeleteFile("c:\\zwischen2.txt");Das seltsame ist dass es bei Datei klappt. Habe überlegt dass zwischen2 von einer anderen Funktion geöffnet ist dem ist aber nicht so
Warum sparst du dir nicht das ganze switch case gedaddel, könntest ja einfach schreiben:
if(cRead == '\t'||cRead == '\n') { if(cRead == '\t') { if (merker==0) { zwischen=atof(abd); merker=1; } buffer1[i2]='\t'; memset(abd,0,9); i=-1; } else if (cRead == '\n') { buffer1[i2]='\n'; buffer1[i2+1]=0; if (merker2==0) { zwischen1 = zwischen; merker2=1; } if (zwischen1 !=zwischen) { file2<<buffer1;//////// } memset(buffer1,0,100); memset(abd,0,9); merker=0; i=-1; i2=-1; } } else { abd[i] = cRead; buffer[i2] = cRead; }
-
Ja stimmt ist kürzer und kommt auf selbe, aber ist jetzt nicht so richtig das Problem. Er schließt die Datei die er mit file.open() geöffnet hat nicht mit file.close(). Dardurch kann ich sie danach nicht löschen. Warum schließt er sie nicht und wie kann ich sie schließen?
-
du könntest erstmal überprüfen, ob sie noch nicht geschlossen ist, also erstmal mit file2.good() schaun, ob se überhaupt zu is, oder net, dann würdest du vllt von dir aus auf den Fehler kommen, also ich seh derzeit keinen.
abgesehen davon würde ich an deiner Stelle auch nicht C-Filestreaming und C++ Filestreaming mischen, sondern entweder das eine, oder das andere, erleichtert die Übersichtlichkeit
-
file.close; if (file.good()==true) cout<< "auf";da gibt er auf raus, also true. Heißt das jetzt zu oder auf?
mit den mischen hast du recht. Habe nur das problem das ich sie mit file << buffer1; einlese. Und mit
cRead=fgetc(Datei);kontroliere. Kenne leider nicht die Befehle in c++ wo ich beides machen kann.
-
char * buffer="some text"; char cRead; datei << buffer; // string schreiben andere_datei >> cRead; // char lesenEigentlich logisch. Nicht wahr ?
Kurt
-
Cool, ja ziemlich logisch.
-
Jetzt würde ich nur noch gerne wissen wie ich dann Dateien schließen und dann löschen kann. Bei mir klappt es jetzt da ich alles in Funktionen gepackt habe und diese beim Beenden die Datei automatisch schließen. Würde mich aber trotzdem mal intressieren warum es mit file.close nicht geht aber mit f
close(file)
-
Oliver1980 schrieb:
file.close;// <= MACH ENDLICH DIE KLAMMERN DA HIN!!!1einself
-
Versteh zwar nicht warum wütend. Aber danke genau das wollt ich die ganze Zeit wissen. Hat jetzt geklappt
-
Oliver1980 schrieb:
Versteh zwar nicht warum wütend. Aber danke genau das wollt ich die ganze Zeit wissen. Hat jetzt geklappt
dann hättest du genauer lesen sollen, der erste beitrag von Caipi bezieht sich schon darauf
-
Hat aber mit remove leider auch nicht geklappt
-
Oliver1980 schrieb:
Hat aber mit remove leider auch nicht geklappt
du hast es immer noch nicht gesehen. schau dir das kommentar im code an

-
OK jetzt versteh ich es
