![]() |
AW: File löschen und umbenennen geht nicht
Timer 2 hat ein Intervall von 3500 und er scheint die CheckForPatchFile Prozedur nicht aufzurufen. Beim Click auf den Button keine Reaktion.
Wenn ich Breakpoints setze,
Delphi-Quellcode:
...werden DeleteFile und RenameFile einfach übersprungen, er springt dann auch nach einem weiteren Druck auf F7 sofort zum "end;" von Timer2Timer und dann in die Unit "CostumTimer" hierhin:
procedure TForm7.CheckForPatchFile;
var patchfile, currentfile: string; begin patchfile := ExtractFilePath(Application.ExeName)+'vers_patch.ini'; currentfile := ExtractFilePath(Application.ExeName)+'vers_aktuell.ini'; if not FileExists(patchfile) then exit; deletefile(currentfile); renamefile(patchfile, currentfile); end;
Delphi-Quellcode:
procedure TCostumTimer.DoOnTimer;
if Assigned(FOnTimer) then FOnTimer(Self); end; EDIT: Das Löschen funzt jetzt. Habe aus DeleteFile(currentfile); einfach DeleteFile(PChar(currentfile)); gemacht. Jetzt muss ich nur noch am rename knabbern. Da bekomme ich den Fehlercode = 2. |
AW: File löschen und umbenennen geht nicht
Und was heißt Fehlercode 2?
![]() |
AW: File löschen und umbenennen geht nicht
Ja, ich weiß, dass es der Code für "File not found" ist. Aber es wird ja die noch existierende "vers_patch.ini" umbenannt und nicht die "vers_aktuell.ini", die gelöscht wird.
Auch wenn ich bei renamefile(patchfile,...'vers_aktuell.ini') eingebe, bekomme ich diesen Fehler. |
AW: File löschen und umbenennen geht nicht
Statt Löschen und Umbenennen kannst Du es auch einmal mit
![]() [edit]Also etwa so:
Delphi-Quellcode:
procedure TForm7.CheckForPatchFile;
var patchfile, currentfile: string; begin patchfile := ExtractFilePath(Application.ExeName)+'vers_patch.ini'; if FileExists(patchfile) then begin currentfile := ExtractFilePath(Application.ExeName)+'vers_aktuell.ini'; if not MoveFileEx(PChar(patchfile),PChar(currentfile),MOVEFILE_REPLACE_EXISTING or MOVEFILE_WRITE_THROUGH) then raise Exception.Create(SysErrorMessage(GetLastError)); end; end; |
AW: File löschen und umbenennen geht nicht
Oh mein Gott, :wall::wall: Kann ich noch irgendwo meinen Kopf gegenhauen :lol:
Das RenameFile hätte die ganze Zeit funktioniert, wenn ich gleich gesehen hätte, dass die eigentliche "vers_patch.ini" im Ordner -> "vers__patch.ini" hieß. Und da er ja im Quelltext nach einer "vers_patch.ini" sucht, kann er sie natürlich nicht finden. Da habe ich wohl beim erstellen der Datei einen Unterstrich zu viel eingebaut. :oops: |
AW: File löschen und umbenennen geht nicht
Drum legt man gerne auch eine Konstante für solche Namen an ... da sind überall die Namen gleich.
|
AW: File löschen und umbenennen geht nicht
Properties/Funktionen wären aber auch noch eine Möglichkeit, solche Fehler zu vermeiden. Auch hier kann man ja dann Konstanten verwenden.
Delphi-Quellcode:
Man kann das auch noch weiter treiben und eine weitere Funktion schreiben, die den Pfad zurückgibt.
function PatchFileName: string;
const ININAME = 'vers_patch.ini'; begin Result := ExtractFilePath(ParamStr(0)) + ININAME; end; function CurrentFileName: string; const ININAME = 'vers_aktuell.ini'; begin Result := ExtractFilePath(ParamStr(0)) + ININAME; end; procedure TForm7.CheckForPatchFile; var patchfile, currentfile: string; begin patchfile := PatchFileName; if FileExists(patchfile) then begin currentfile := CurrentFileName; if not MoveFileEx(PChar(patchfile),PChar(currentfile),MOVEFILE_REPLACE_EXISTING or MOVEFILE_WRITE_THROUGH) then raise Exception.Create(SysErrorMessage(GetLastError)); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz