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.