![]() |
DeleteFile und die Datei ist immer noch da
Hallo,
Mit ein Delphi 2006 geschriebenes Programm erstelle ich eine Datei im ProgramData Verzeichnis und lade die über eine Internetseite mit dem TEmbeddedWB. Das erste mal ist alles in Ordnung, die Datei wird richtig auf der Internetseite angezeigt. Doch wenn ich noch eine Datei (mit selben Namen) lösche, dann neu erstelle, bekomme ich keine Fehlermeldung aber auf die Internetseite wird immer die erste Datei geladen. Erst wenn ich das Programm schließe verschwindet die Datei. Was komisch ist DeleteFile('name') gibt True zurück und TFileStream.Create('name', fmCreate) meldet kein Fehler. Wenn das Programm läuft kann ich nicht diese Datei öffnen, sogar als Administrator komme ich nicht in den Eigenschaften an die Security ran... |
AW: DeleteFile und die Datei ist immer noch da
Du hast wohl in deinem Programm noch ein exklusives Handle auf die Datei offen. Freest du deinen FileStream nach dem Erstellen auch korrekt?
|
AW: DeleteFile und die Datei ist immer noch da
Ja mit fs.Free;
|
AW: DeleteFile und die Datei ist immer noch da
Fehlerbehandlung irgendwie?
|
AW: DeleteFile und die Datei ist immer noch da
Der TEmbeddedWB kapselt doch den IE und der guckt erstmal in den Cache. Könnte es sein, dass Du deshalb nicht die veränderte Seite zu sehen bekommst?
Nach 'nem Programmneustart weiß der dann nicht mehr, dass er die Datei schonmal angezeigt hat, zeigt sie daher neu an, wozu er die aktuelle Datei nutzt. Wäre zumindest mal 'ne Prüfung wert, ob da so ein Effekt vorhanden sein könnte. |
AW: DeleteFile und die Datei ist immer noch da
Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var Flags: OLEVariant; begin Flags:=4; //NavNoReadFromCache WebBrowser1.Navigate('http://www.xxxxx.com/', Flags); end; |
AW: DeleteFile und die Datei ist immer noch da
Zitat:
Zitat:
Ich habe vergessen zu sagen dass das nur auf Windows 10 vorkommt, nicht auf Windows 7. Ist es möglich dass das Programm in eine Virtual Machine läuft ohne das man es weiß ? |
AW: DeleteFile und die Datei ist immer noch da
Ich wollte wissen, ob du eine Fehlerbehandlung in deinem Code hast. Zum Beispiel ob der Rückgabewert von 8i]delteFile[/i] geprüft wird und wenn es fehlschlägt, was als Fehlermeldung ausgegeben wird.
|
AW: DeleteFile und die Datei ist immer noch da
Also um das was Luckie gefragt hat nochmals zu verdeutlichen:
Delphi-Quellcode:
Anschließend kannst du
procedure checkErrorDeleteFile(const path : string);
begin SetLastError(0); DeleteFile(path); ShowMessage(IntToStr(GetLastError)); end; ![]() |
AW: DeleteFile und die Datei ist immer noch da
Ähhhhh, FALSCH und FALSCH.
siehe ![]()
Delphi-Quellcode:
Sorry, es gibt zwar viele Wege, um nach Rom zu kommen, aber man sollte niemals nach links gehn, wenn dort ein Schild "rechts" steht.
procedure checkErrorDeleteFile(const path : string);
begin //SetLastError(0); // das heißt LAST-Error und nicht THIS-Error is not DeleteFile(PChar(path)) then // rate mal, warum der Wert von GetLASTError nur "definitert" ist, wenn es einen Fehler gab :roll: //ShowMessage(IntToStr(GetLastError)); //ShorMessage als Fehlerbehandlung? RaiseLastOSError; // aka raise Exception.Create(SysErrorMessage(GetLastError)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 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