AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DeleteFile löscht gewünschte Datei nicht
Thema durchsuchen
Ansicht
Themen-Optionen

DeleteFile löscht gewünschte Datei nicht

Ein Thema von Metallicwar · begonnen am 4. Mär 2011 · letzter Beitrag vom 4. Mär 2011
Antwort Antwort
Seite 1 von 3  1 23      
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#1

DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 13:33
Hallo, wie der Titel schon sagt, wird die gewünschte Datei nicht gelöscht, könnt ihr mir mal bitte sagen wieso?
Delphi-Quellcode:
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;
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 AbZIPEntpacken.FileName := sZIPPfad; Vielleicht kann mir da noch weitergeholfen werden, ohne ein neues Thema zu eröffnen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 13:35
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?
$2B or not $2B

Geändert von himitsu ( 4. Mär 2011 um 13:39 Uhr)
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#3

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 13:43
Hallo himitsu,
Zitat:
Vermutlich weil AbZIPEntpacken diese noch geöffnet hat?
ich muss dazu sagen, dass die vorhergehenden Anweisungen ausgeführt werden.
Er speichert die Datei im richtigem Verzeichnis und entpackt sie dort auch, nur eben das Löschen der ZIP Datei funktioniert nicht.

Zitat:
PSS: Warum eigentlich einmal Application.ExeName und dann wieder ParamStr(0) ?
ehm habe zu Beginn mit Application.ExeName gearbeitet, ein Kollege hat mir dann ParamStr gezeigt

und dazu:
Zitat:
Und die Exception:
Du gibst AbZIPEntpacken frei, aber wo erstellst du es?
habe das Free entfernt, nun meckert er, nachdem ich erneut den button anklicke, dass der Ordern Bankdaten.zip nicht erstellt werden kann.
Liegt aber vermutlich daran, dass der Ordner bereits existiert, daher möchte ich ihn ja löschen.

Geändert von Metallicwar ( 4. Mär 2011 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#4

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 13:47
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
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#5

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 13:57
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.
AbZIPEntpacken.Create(Self); verstehe daher nicht, wieso ich meine ZIP Komponente nochmals erzeugen soll?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 13:59
habe das Free entfernt, nun meckert er, nachdem ich erneut den button anklicke, dass der Ordern Bankdaten.zip nicht erstellt werden kann.
Liegt aber vermutlich daran, dass der Ordner bereits existiert, daher möchte ich ihn ja löschen.
Es wird nun aus genau dem selben Grund gemeckert, weswegen die Datei vorher auch nicht gelöscht werden konnte.
> 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:
AbZIPEntpacken.Create(Self);
Wie erzeugt man Objekte?
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.
$2B or not $2B

Geändert von himitsu ( 4. Mär 2011 um 14:01 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 14:12
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 ?

Geändert von Bjoerk ( 4. Mär 2011 um 14:18 Uhr) Grund: (zwischen free und delete) eingefügt.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 14:16
Kann sein, daß dein Antivierenprogramm die Datei noch nicht freigibt.
Sehr unwahrscheinlich. Der Scan ist üblicherweise abgeschlossen sobald die Datei erfolgreich geöffnet ist.

Ansonsten empfehle ich MSDN-Library durchsuchenMoveFileEx mit MOVEFILE_DELAY_UNTIL_REBOOT.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 14:21
Ansonsten empfehle ich MSDN-Library durchsuchenMoveFileEx mit MOVEFILE_DELAY_UNTIL_REBOOT.
War das nicht das, wofür man Adminrechte benötigt?

PS: Der Schuldige ist nicht der Virenscanner oder Sonstwer, sondern AbZIPEntpacken.
$2B or not $2B
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#10

AW: DeleteFile löscht gewünschte Datei nicht

  Alt 4. Mär 2011, 14:27
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 ?
Das mit dem Antivirenprogramm bezweifle ich.
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:
Zitat von Metallicwar:
habe das Free entfernt, nun meckert er, nachdem ich erneut den button anklicke, dass der Ordern Bankdaten.zip nicht erstellt werden kann.


Liegt aber vermutlich daran, dass der Ordner bereits existiert, daher möchte ich ihn ja löschen.
Es wird nun aus genau dem selben Grund gemeckert, weswegen die Datei vorher auch nicht gelöscht werden konnte.
> 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:
AbZIPEntpacken.Create(Self);
Wie erzeugt man Objekte?
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.
ok, werd die Komponente mal zur Laufzeit erzeugen, und P.s ja ich weis wie man Objekte erzeugt

das mit GetLastError muss ich mal schaun wie's funktioniert. F1 sollte weiterhelfen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 09:54 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