AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

File löschen und umbenennen geht nicht

Ein Thema von Störtebeker · begonnen am 11. Aug 2010 · letzter Beitrag vom 19. Aug 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#11

AW: File löschen und umbenennen geht nicht

  Alt 18. Aug 2010, 22:22
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:
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;
...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:

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.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."

Geändert von Störtebeker (19. Aug 2010 um 00:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: File löschen und umbenennen geht nicht

  Alt 19. Aug 2010, 10:19
Und was heißt Fehlercode 2? http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#13

AW: File löschen und umbenennen geht nicht

  Alt 19. Aug 2010, 10:26
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.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: File löschen und umbenennen geht nicht

  Alt 19. Aug 2010, 10:31
Statt Löschen und Umbenennen kannst Du es auch einmal mit MSDN-Library durchsuchenMoveFileEx versuchen.

[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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (19. Aug 2010 um 10:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

Registriert seit: 9. Jul 2007
398 Beiträge
 
#15

AW: File löschen und umbenennen geht nicht

  Alt 19. Aug 2010, 11:21
Oh mein Gott, Kann ich noch irgendwo meinen Kopf gegenhauen

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.
"And he piled upon the whale´s white hump - a sum of all the rage and hate felt by his whole race.
If his chest had been a cannon, he would have shot his heart upon it."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#16

AW: File löschen und umbenennen geht nicht

  Alt 19. Aug 2010, 11:44
Drum legt man gerne auch eine Konstante für solche Namen an ... da sind überall die Namen gleich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: File löschen und umbenennen geht nicht

  Alt 19. Aug 2010, 12:18
Properties/Funktionen wären aber auch noch eine Möglichkeit, solche Fehler zu vermeiden. Auch hier kann man ja dann Konstanten verwenden.
Delphi-Quellcode:
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;
Man kann das auch noch weiter treiben und eine weitere Funktion schreiben, die den Pfad zurückgibt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz