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
Benutzerbild von Störtebeker
Störtebeker

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

AW: File löschen und umbenennen geht nicht

  Alt 12. Aug 2010, 07:54
Danke für eure Tipps und Hinweise, werde mal schauen, wie ich damit weiterkomme.

Das ganze läuft auf Windows XP (vorerst), und beiden Datein, sowohl die Exe, als auch die beiden Inis liegen in ein und dem selben Verzeichnis in einem Ordner innerhalb des "Eigene Datein" Ordner.

EDIT: Ne, bringt leider auch nichts, auch wenn es natürlich schöner aussieht im Code. Aber löscht weder die eine File, noch überschreibt er die andere.
"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 (12. Aug 2010 um 09:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

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

AW: File löschen und umbenennen geht nicht

  Alt 18. Aug 2010, 21:38
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;
Ich bin gerade echt am verzweifeln... ...ich weiß nicht, aber es scheint, als würde sich Delphi um diesen Codeschnipsel gar nicht kümmern. Kein Löschen der File, kein Umbenennen der File.

Aufgerufen wird die CheckForPatchFile Procedure etwas später bei einem Timer:

Delphi-Quellcode:
procedure TForm7.Timer2Timer (Sender: TObject);
begin
 Label9.Caption:='Patching...';
 Form7.Caption:='0%';
 begin
 if FileExists(ExtractFilePath(Application.ExeName)+'vers_patch.ini') then
 CheckForPatchFile;
 Timer3.Enabled:=True;
end;
end;
Timer2 wird im FormShow Ereignis gestartet
Delphi-Quellcode:
procedure TForm7.FormCreate(Sender: TObject);
begin
Label9.Caption:='Loading...';
Timer2.Enabled:=True;
end;
"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 Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#3

AW: File löschen und umbenennen geht nicht

  Alt 18. Aug 2010, 21:58
Hallo,

erstmal: den Code if FileExists(ExtractFilePath(Application.ExeName)+'vers_patch.ini') then im "Timer2Timer" kannst du dir ersparen, denn
das gleiche, über einen anderen Weg macht dieser Code in der Procedure CheckForPatchFile:  if not FileExists(patchfile) then exit; Lass dir doch erstmal die Rückgabewerte zurückmelden:

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
    ShowMessage(Format('Datei existiert nicht: %s', [patchfile]));
    exit;
  If not deletefile(currentfile) then
    begin
      ShowMessage('löschen fiel fehl!');
      exit;
    end;
  If not renamefile(patchfile, currentfile) then
    begin
      ShowMessage('Umbenennen fiel fehl!');
      exit;
    end;
  ShowMessage('alles scheint in Ordnung gewesen zu sein!');
end;
Die ShowMessages zeigen dir was los ist, ob das Lösen funktionierte bzw. das Umbenennen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (18. Aug 2010 um 22:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

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

AW: File löschen und umbenennen geht nicht

  Alt 18. Aug 2010, 22:11
Tja, irgendwas ist da noch im argen, da ich auch keine Rückmeldungen bekomme. Es passiert einfach nix.
"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 Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#5

AW: File löschen und umbenennen geht nicht

  Alt 18. Aug 2010, 22:14
Setz halt mal beim Aufruf von CheckForPatchFile einen Breakpoint und schau ob das Programm dort überhaupt aufgerufen wird und wenn ja, dann jumpe einfach mit F7 mal weiter.

Was für einen Intervall hast du beim Timer 2?

Ruf halt mal die Procedure CheckForPatchFile über einen Button auf. Um festzustellen ob was geht
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Störtebeker
Störtebeker

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

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.656 Beiträge
 
Delphi 12 Athens
 
#7

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 himitsu
himitsu

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

AW: File löschen und umbenennen geht nicht

  Alt 18. Aug 2010, 22:13
SchowMessage ist ja eher unglücklich, vorallem wenn diese in einem Timer auftauchen ... Exceptions sind doch auch nett?


Und ich würde auch noch SysErrorMessage(GetLastError) in die Messages/Exceptions einbauen.


[edit]
Bist du sicher, diese Methode (Timerereignis) wird aufgerufen?
Nur weil eine Methode Timer2Timer heißt, muß sie nicht mit dem timer2 verknüpft sein und der Timer muß auch nicht unbedingt aktiv sein.

Ich schlage für sowas immer etwas sehr Praktisches vor
und das nennt sich Debuggen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Aug 2010 um 22:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:17 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