AGB  ·  Datenschutz  ·  Impressum  







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

Gelöschte Datei immer noch vorhanden?

Ein Thema von sko1 · begonnen am 27. Jul 2017 · letzter Beitrag vom 27. Jul 2017
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 09:40
Hallo,

ich habe ein ganz komisches Verhalten:

Delphi-Quellcode:
          bild1 := 'c:\temp\pdf1.pdf';
          bild2 := 'c:\temp\pdf2.pdf';
          if TFile.Exists(bild2) then
            TFile.Delete(bild2);
          try
            TFile.Copy(bild, bild2);
          except
            showmessage(bild2 + ' wurde gelöscht, ist aber noch vorhanden !');
          end;
Bei mehrfachem schnellen Aufruf dieses Codeschnipsels kommt ab und zu die Messagebox!

Was ist denn da los und viel wichtiger, wie bekommt man das korrigiert?

Ciao
Stefan
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 10:08
Liefert TFile.Delete keinen Rückgabewert, der Dir was zum Erfolg / Misserfolg des Löschens sagt?

Zuerst mal den abfragen.

EDIT:

Ok, habe mal unter http://docwiki.embarcadero.com/Libra...s.TFile.Delete geschaut, Delete ist 'ne Prozedur, also nix mit Rückgabewert.

Ist wohl anders als beim DeleteFile aus Delphi 7-Zeiten.

Das Try würd' ich etwas abwandeln:
Delphi-Quellcode:
try
  TFile.Copy(bild, bild2);
except
  on e : Exception do begin
    showmessage(e.Message + #13 + bild2 + ' wurde gelöscht, ist aber noch vorhanden !');
  end;
end;
Im Except-Block die gelieferte Fehlermeldung nicht auszuwerten, dafür aber die eigene, vermutete bzw. erwartete Fehlermeldung auszugeben, halte ich nicht zwingend für eine gute Idee. Man kann mit seiner Annahme richtig liegen, muss es aber nicht.

Geändert von nahpets (27. Jul 2017 um 10:22 Uhr) Grund: Text ergänzt
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#3

AW: Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 10:12
Lass mal das try - except weg, damit du die Exception im Original angezeigt bekommst.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#4

AW: Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 10:13
Liefert TFile.Delete keinen Rückgabewert, der Dir was zum Erfolg / Misserfolg des Löschens sagt?
Nein, denn TFile.Delete ist eine procedure. Es würde aber eine Exception ausgelöst, wenn das nicht klappen würde.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 10:14
Das passierte bei Bildern ganz gerne mal, wenn der Windows Explorer noch ein Handle für die Vorschau offen hatte. Oder auch bei Virenscannern.
Eigentlich sollte das aber nicht mehr auftreten, denn seit Windows 8 kehrt die Funktion zum Löschen normalerweise erst zurück, wenn das Löschen nicht nur erfolgreich, sondern auch komplett abgeschlossen ist.

Warum löschst du eigentlich vorher und gibst nicht einfach als dritten Parameter an TFile.Copy True mit? Denn wenn du direkt angibst, dass die Zieldatei überschrieben werden soll, hast du doch den gleichen Effekt, nur ohne zusätzliches Löschen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 10:28
Vielen herzlichen Dank!
Der dritte Parameter war mir gar nicht bewusst, zumal die Codevervollständigung nur die Variante mit 2 Parametern anbietet!

Der gepostete Code war "Dummycode", ich fang schon die Exception richtig ab und da bekam ich eben "File already exists" zurück...

Das Problem sollte damit gelöst sein!

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Gelöschte Datei immer noch vorhanden?

  Alt 27. Jul 2017, 11:16
Das passierte bei Bildern ganz gerne mal, wenn der Windows Explorer noch ein Handle für die Vorschau offen hatte. Oder auch bei Virenscannern.
Würde ich auch sagen das oft der Virenscanner der schuldige

Eigentlich sollte das aber nicht mehr auftreten, denn seit Windows 8 kehrt die Funktion zum Löschen normalerweise erst zurück, wenn das Löschen nicht nur erfolgreich, sondern auch komplett abgeschlossen ist.
Eigentlich. Habe hier Win8.1 und auch öfter den Fall. Behelfe mich jetzt mit ein DeleteAndWaitAndRetry-Hilfsfunktion die ich an Problematischen Stellen einbaue.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 04:36 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