Access Violation Fehler, Invalid Pointer operation [gelöst]



  • der oli schrieb:

    [cpp]// Variablendeklaration
    char****** Dateiname_neu = new char[64];[/cpp]
    .
    .
    Oli

    Hallo 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 + Name
    

    Es 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 😉


Anmelden zum Antworten