Probleme mit MoveFile



  • Hallo,
    Ich habe ein Problem mit MoveFile:
    Ich habe zu meinem Programm ein automatisches Update gemacht. Die neuen Dateien werden unter "Dateiname.update" gespeichert. Die StringList "Updates" enthält die Namen der *.update Dateien mit vollem Pfad. Jetzt wollte ich als erstes die Dateien, die bereits vorhanden sind umbenennen zu "Dateiname.old" und dann die *.update-Dateien Die Dateiendung nach "" (leer) umbenennen. Der Code wurde sehr lang und umständlich, aber es lässt sich bis jetzt ausführen. Aber dann kommt der Fehler:
    "Im Projekt... trat ein Fehler mit folgender Meldung auf: 'Zugriffsverletzung bei 0x0040f60'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen."
    Wie könnte ich den Code besser schreiben?
    Hier der Code:

    for(int i=0; i < Updates->Count; i++)
      {
       //chars zur Erleichterung:
       LMDLabel5->Caption="Datei "+AnsiString(i)+" wird geupdatet";
       AnsiString Hauptpfad = ExtractFilePath(Application->ExeName);
       char *HauptpfadCh;
       HauptpfadCh = Hauptpfad.c_str();
       AnsiString UpdateFile = ChangeFileExt(Updates->Strings[i],"");
       char *UpdateFileCh;
       UpdateFileCh = UpdateFile.c_str();
       AnsiString UpdateFile2 = Hauptpfad+UpdateFile;
       char *UpdateFile2Ch;
       UpdateFile2Ch = UpdateFile2.c_str();
       AnsiString UpdateFileOld = UpdateFile+".old";
       char *UpdateFileOldCh;
       UpdateFileOldCh = UpdateFileOld.c_str();
       AnsiString HauptpfadFile = Hauptpfad+Updates->Strings[i];
       char *HauptpfadFileCh;
       HauptpfadFileCh = HauptpfadFile.c_str();
       //eigentliche Dateioperation:
       if(FileExists(Updates->Strings[i]))
        {
         MoveFile(UpdateFile2Ch,UpdateFileOldCh);
        }
       MoveFile(HauptpfadFileCh,UpdateFileCh);
       //aufräumen:
       delete &Hauptpfad;
       delete &UpdateFile;
       delete &UpdateFile2;
       delete &UpdateFileOld;
       delete &HauptpfadFile;
       delete HauptpfadCh;
       delete UpdateFileCh;
       delete UpdateFile2Ch;
       delete UpdateFileOldCh;
       delete HauptpfadFileCh;
      }
    

    Gruß BCB6-User



  • String TargetPath = ExtractFilePath(Application->ExeName);
      for(int i = 0; i < Updates->Count; i++)
      {
        String FullSource = Updates->Strings[i];
        String FullTarget = ChangeFileExt(TargetPath + ExtractFileName(FullSource), "");
    
        if (FileExists(FullTarget) && RenameFile(FullTarget, FullTarget + ".old") == false)
          ShowMessage("Konnte existierende Datei nicht umbenennen (" + FullTarget + ")");
    
        if (CopyFile(FullSource.c_str(), FullTarget.c_str(), true) == false)
          ShowMessage("Konnte existierende Datei nicht ersetzen (" + FullTarget + ")");
      }
    

    Ungetestet.


Anmelden zum Antworten