![]() |
DeleteFile löscht gewünschte Datei nicht
Hallo, wie der Titel schon sagt, wird die gewünschte Datei nicht gelöscht, könnt ihr mir mal bitte sagen wieso?
Delphi-Quellcode:
Desweiteren erhalte ich, nachdem ich die Anwendung zur Laufzeit ein zweites mal ausführe (Button klicken --> Anweisungen werden ausgeführt, nochmal Button klicken --> selbe Anweisungen nochmal ausführen) eine Zugriffsverletzung in Zeile
procedure TfrmBankenDownload.ZIPAusführen;
var sExePfad, sZIPPfad: String; begin sZIPPfad := ExtractFilePath(ParamStr(0))+'Bankdaten.zip'; TRY ftpDateiDownload.Get('Bankdaten.zip',sZIPPfad, true); EXCEPT on E: Exception do ShowMessage('Beim Download der ZIP Datei ist ein Fehler aufgetreten.' + sLineBreak + 'Exception class name = '+E.ClassName + sLineBreak + 'Exception message = '+E.Message); END; TRY begin sExePfad := ExtractFilePath(Application.ExeName); AbZIPEntpacken.FileName := sZIPPfad; AbZIPEntpacken.BaseDirectory := (sExePfad+'Bankdaten'); AbZIPEntpacken.ExtractFiles('*.*'); Application.ProcessMessages; SysUtils.DeleteFile(sZIPPfad); // <------- ZIP Datei wird nicht gelöscht. end; EXCEPT on E: Exception do begin ShowMessage('Es ist ein Fehler beim Entpacken der ZIP Datei aufgetreten.' + sLineBreak + 'Exception class name = '+E.ClassName + sLineBreak + 'Exception message = '+E.Message); end; END; AbZIPEntpacken.Free; end;
Delphi-Quellcode:
Vielleicht kann mir da noch weitergeholfen werden, ohne ein neues Thema zu eröffnen
AbZIPEntpacken.FileName := sZIPPfad;
|
AW: DeleteFile löscht gewünschte Datei nicht
Vermutlich weil AbZIPEntpacken diese noch geöffnet hat?
PS: DeleteFile hat ein Result und kennt GetLastError PSS: Warum eigentlich einmal Application.ExeName und dann wieder ParamStr(0) ? Und die Exception: Du gibst AbZIPEntpacken frei, aber wo erstellst du es? |
AW: DeleteFile löscht gewünschte Datei nicht
Hallo himitsu,
Zitat:
Er speichert die Datei im richtigem Verzeichnis und entpackt sie dort auch, nur eben das Löschen der ZIP Datei funktioniert nicht. Zitat:
und dazu: Zitat:
Liegt aber vermutlich daran, dass der Ordner bereits existiert, daher möchte ich ihn ja löschen. |
AW: DeleteFile löscht gewünschte Datei nicht
Mach "SysUtils.DeleteFile(sZIPPfad);" nach "AbZIPEntpacken.Free;" ....
Ausserdem den anderen Rat von himi auch beachten. Das AbZIPEntpacken.Create() sollte eigentlich direkt über das zweite "try". HTH |
AW: DeleteFile löscht gewünschte Datei nicht
also das Löschen funktioniert jetzte.
aber es tritt immer noch der Fehler beim zweiten Klick auf (Zugriffsverletzung) Ich erzeuge die Komponenten nicht zur Laufzeit, als Zusatzinfo.
Delphi-Quellcode:
verstehe daher nicht, wieso ich meine ZIP Komponente nochmals erzeugen soll?
AbZIPEntpacken.Create(Self);
|
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
> Du hast über .FileName dem AbZIPEntpacken gesagt, es soll diese Datei öffnen/verwenden und das macht es auch, bis du was Anderes sagst. Hast du dir mal das Result, GetLastError und SysErrorMessage angesehn? Zitat:
Delphi-Quellcode:
.
AbZIPEntpacken := TAbZIPEntpacken.Create(Self);
Und wenn du es freigibst, dann ist es weg, also neu erstellen, aber wenn du es manuell erstellst, dann darfst du nicht die Komponente auf die Form legen, also nicht automatisch von der VCL erstellen lassen, wärend sie die Form erstellt. |
AW: DeleteFile löscht gewünschte Datei nicht
Kann sein, daß dein Antivierenprogramm die Datei noch nicht freigibt.
Auf jeden Fall mal das free vor dem delete probieren. Statt des Application.ProcessMessages mal ein sleep(1) versuchen (zwischen free und delete). Hast du AbZIPEntpacken:=TZipDingens.Create irgendwo stehen ? |
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
Ansonsten empfehle ich ![]() |
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
PS: Der Schuldige ist nicht der Virenscanner oder Sonstwer, sondern AbZIPEntpacken. |
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
das mit dem sleep werd ich mal probieren. TZipDingens.Create hab ich nirgends stehen, habe doch erwähnt dass ich die Komponente nicht zur Laufzeit erzeuge. Zitat:
das mit GetLastError muss ich mal schaun wie's funktioniert. F1 sollte weiterhelfen ;) |
AW: DeleteFile löscht gewünschte Datei nicht
wenn du das mit dem Antivirenprogramm bezweifeslt, dann kannst du dir das mit dem sleep sparen.:-D
|
AW: DeleteFile löscht gewünschte Datei nicht
nimm' lieber
![]() ![]() > ![]() |
AW: DeleteFile löscht gewünschte Datei nicht
Delphi-Quellcode:
also so wie's aussieht, lag schon von himitsu vermutet, an der ZIP Komponente, hab sie jetzte mal zur Laufzeit erzeugt und siehe da, es funktioniert !
procedure TfrmBankenDownload.ZIPAusführen;
var sExePfad, sZIPPfad: String; AbZIPEntpacken : TAbUnZipper; begin sZIPPfad := ExtractFilePath(ParamStr(0))+'Bankdaten.zip'; TRY ftpDateiDownload.Get('Bankdaten.zip',sZIPPfad, true); EXCEPT on E: Exception do ShowMessage('Beim Download der ZIP Datei ist ein Fehler aufgetreten.' + sLineBreak + 'Exception class name = '+E.ClassName + sLineBreak + 'Exception message = '+E.Message); END; TRY begin AbZIPEntpacken := TAbUnZipper.Create(Self); sExePfad := ExtractFilePath(Application.ExeName); AbZIPEntpacken.FileName := sZIPPfad; AbZIPEntpacken.BaseDirectory := (sExePfad+'Bankdaten'); AbZIPEntpacken.ExtractFiles('*.*'); Application.ProcessMessages; end; EXCEPT on E: Exception do begin ShowMessage('Es ist ein Fehler beim Entpacken der ZIP Datei aufgetreten.' + sLineBreak + 'Exception class name = '+E.ClassName + sLineBreak + 'Exception message = '+E.Message); end; END; AbZIPEntpacken.Free; SysUtils.DeleteFile(sZIPPfad); ftpDateiDownload.Disconnect; end; Vielen Dank für die Hilfe ! :dp: |
AW: DeleteFile löscht gewünschte Datei nicht
Hi,
ein AbZipXX.close hätte vor dem Delete vermutlich auch schon ausgereicht... Grüße |
AW: DeleteFile löscht gewünschte Datei nicht
Wenn diese Komponente ordentlich geschrieben ist, sollte man auch irgendwie die Datei wieder schließen/freigeben können.
Ich kenn diese allerdings nicht, aber eventuell gibt es ja sowas wie
Delphi-Quellcode:
oder
AbZIPEntpacken.CloseFile
Delphi-Quellcode:
AbZIPEntpacken.FileName := '';
|
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
|
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
![]() HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Session Manager\FileRenameOperations eingetragen werden und braucht man für HKEY_LOCAL_MACHINE nicht nicht gewisse Rechte? |
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
|
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
CloseFile gibts nicht. und den FileName leer setzen, hab ich nicht probiert. Aber diese Komponente ist nicht gut geschrieben, hat mein Kollege bestätigt. Er empfiehlt ![]() |
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
Zitat:
|
AW: DeleteFile löscht gewünschte Datei nicht
MoveFileExW -> MoveFileWithProgressW -> BasepMoveFileDelayed
Dort wird dann der Registryschlüssel geöffnet und das kann in der Tat schiefgehen wenn der Benutzer nicht alle Rechte auf diesen Schlüssel besitzt, wie es aussieht. Hast also recht, himitsu. |
AW: DeleteFile löscht gewünschte Datei nicht
Die ursprüngliche Aussage, dass man dazu Administratorenrechte benötigt stammt übrigens von jemanden, der hier mal als Olli abgemeldet war. ;)
|
AW: DeleteFile löscht gewünschte Datei nicht
Zitat:
|
AW: DeleteFile löscht gewünschte Datei nicht
meine implizite Erwähnung dessen hat man bestimmt übersehn :cry:
|
AW: DeleteFile löscht gewünschte Datei nicht
Nicht schlimm. Ist nur ein unbedeutendes Licht in der Delphi Szene. Habe gehört er sitzt jetzt auf einen vulkanischen Felsen im Nordatlantik. :tongue:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 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