Access Violation Fehler, Invalid Pointer operation [gelöst]
-
Hallo Oli,
Lies dir bitte deinen eigenen Post nochmal durch. Deine Aussage ist falsch.
-
der oli schrieb:
[cpp]// Variablendeklaration
char****** Dateiname_neu = new char[64];[/cpp]
.
.
OliHallo Oli, hier nicht, Das hier ist kein Zeiger auf Zeiger!!!
-
Das sagte ich bereits (zumindest so ähnlich
).
-
bin dabei, mich selbst aufzuklären.
oli
-
hab jetzt folgendes verändert:
Alt:
char* datei = new char[64]; sprintf(datei, "%s%s", verzeichnis, "\\Datei.txt");Neu:
AnsiString datei; datei = verzeichnis; datei += "\\Datei.txt";Problem:
if ((f = fopen(datei, "r"))==NULL)fopen braucht anscheinend nen char-array.
Wie würdet ihr das machen??? Das char-array lassen und wieder Angst vor Speicherfehlern
oder kann man das wieder umwandeln und was war das mit diesen Streams? Leider is die Suchfunktion ja im Moment eher unbrauchbar..
-
Hallo,
1. siehe FAQ
2. Was für Probleme hast du mit den Streams?
-
Das FAQ-Beispiel hat geholfen, allerdings hab ich seitdem die Speicherfehler weg sind das Problem, dass das Umbenennen der Datei nicht mehr funktioniert. Habt ihr dazu eine Idee???
-
Was genau funktioniert denn nicht.
Da wir deinen neuen Code nicht kennen und meine Kristallkugel auch in der Reperatur ist, weiß ich erstmal nicht weiter.
-
Hab den Code weiter oben schonmal gepostet... aber hier nochmal einen Ausschnitt:
Die Datei ist auf jeden Fall vorhanden, das wid mit:
if ((f = fopen(datei, "r"))==NULL) // Wenn DATEI NICHT VORHANDEN { // Fehler cout << "Fehler: In Verzeichnis " << i_verzeichnisse+1 << " wurde die gesuchte Datei nicht gefunden!\n\n"; } else // Wenn DATEI VORHANDEN { // Code...geprüft.
Umbenannt wird hier (Forsetzung von else):
if (RenameFile(DateiPfad_Name,Dateiname_neuStr)) { cout << " Datei wurde umbenannt und verschoben nach " << Dateiname_neuStr.c_str() << "!\n\n"; } else { textcolor(LIGHTRED); //Farbe cprintf("%s%d%s", "Fehler: Datei in Verzeichnis ", i_verzeichnisse+1, " konnte nicht umbenannt werden!\n"); }Variablen:
AnsiString DateiPfad_Name; // Alter Dateipfad + Name AnsiString Dateiname_neuStr; // Neuer Dateipfad + NameEs wird auch keine Fehlermeldung vom Compiler ausgegeben, das Programm läuft und zeigt dann den else-case (Konnte nicht umbenannt werden) an. Aber warum???
-
Schau doch mal nach ob eine Datei mit dem neuen Namen bereits existiert. Vielleicht ist deine Datei aber auch noch offen.
Desweiteren schau mal in die Hilfe zu FileExists.
-
Hey, das ist die Lösung, wie soll er sie auch umbenennen, wenn sie noch offen ist...

Big fat thx
