Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Löschen von Jpeg Dateien (https://www.delphipraxis.net/203725-loeschen-von-jpeg-dateien.html)

needatip 17. Mär 2020 11:30

Löschen von Jpeg Dateien
 
Hallo
ich möchte Jpeg Bilder aus einem Verzeichnis löschen die ich vorher in einem Image betrachten kann.
Leider stürzt das Programm dann ab, die Exe Datei verschwindet und ich bekomme eine Project.exe.000 Datei ?!
Was mache ich falsch? Auch wenn ich das Image vorher mit
Delphi-Quellcode:
Image1.Picture.Assign(Nil);
lösche, gleiches Symptom :)
Delphi-Quellcode:
uses jpeg...
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: string;
  i: integer;
begin
  for i := 1 to 10 do
  begin
    FileName := 'c:\temp\delPic\' + IntToStr(i) + '.jpg';
    Image1.Picture.LoadFromFile(Filename);

...

    Image1.Picture.Assign(Nil);
    if FileExists(FileName) then
      DeleteFile(FileName);
  end;
end;

Luckie 17. Mär 2020 12:40

AW: Löschen von Jpeg Dateien
 
Lass die Schleife mal rückwärts laufen.

Rolf Frei 17. Mär 2020 13:30

AW: Löschen von Jpeg Dateien
 
Was sagt dein Virenscanner? Da scheint mir irgendwas deine Exe als Gefahr einzustufen und diese zu deaktivieren (umbenennen). Dein Code ist auf jeden Fall nicht dafür verantwortlich. Schau dir mal die Logs deines Virenscanners an.

himitsu 17. Mär 2020 13:42

AW: Löschen von Jpeg Dateien
 
Zitat:

Zitat von Luckie (Beitrag 1459941)
Lass die Schleife mal rückwärts laufen.

Da hier nicht aus einer Liste gelösch wird, wobei sich diese Liste ändert, ist die Richtung somit egal.

Auch Image1.Picture zu löschen ist egal, da die Datei nur kurz während des LoadFromFile geöffnet ist und es danach keine Verbindung mehr zur Datei gibt.



Das FileExists ist im Prinzip auch egal (für den gezeigten Zeil des Codes), da die Datei definitiv vorhanden sein muß, weil wenn nicht, dann raucht das LoadFromFile vorher schon mit einer Exception aus der Methode raus.

Keine Ahnung was
Delphi-Quellcode:
...
ist, aber bis auf LoadFromFile kann es hier keine Exception geben.
DeleteFile liefert einen Fehlercode, wobei hier weder dessen Result noch GetLastError ausgewertet wird.

Und nichts an dem gezeigten Code kann das Programm beenden, da die VCL um den Aufruf dieser Methode ein Try-Except hat und dann via Application.ShowException den Fehler nur anzeigt.

dataspider 17. Mär 2020 15:25

AW: Löschen von Jpeg Dateien
 
Zitat:

Zitat von Rolf Frei (Beitrag 1459951)
Was sagt dein Virenscanner? Da scheint mir irgendwas deine Exe als Gefahr einzustufen und diese zu deaktivieren (umbenennen). Dein Code ist auf jeden Fall nicht dafür verantwortlich. Schau dir mal die Logs deines Virenscanners an.

Genau das macht bei mir OfficeScan, wenn ich im Code eine Datei lösche...
...und wirft mir bösartiges Verhalten vor!:shock:

Frank

Rolf Frei 17. Mär 2020 15:38

AW: Löschen von Jpeg Dateien
 
Dann schmeiss das Teil weg und nutze den Windows Defender. Der macht seinen Job besser als die meisten teuren AV-Programme.

dataspider 17. Mär 2020 15:47

AW: Löschen von Jpeg Dateien
 
Würde ich gern, hab ich aber nicht zu entscheiden...:(

zeras 17. Mär 2020 17:08

AW: Löschen von Jpeg Dateien
 
Wenn du schon auf FileExists prüfst, dann solltest du das schon vorher machen und nicht erst versuchen, das Bild zu laden.
So ähnlich hat es himitsu schon geschrieben.

Delphi-Quellcode:
uses jpeg...
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: string;
  i: integer;
begin
  for i := 1 to 10 do
  begin
    FileName := 'c:\temp\delPic\' + IntToStr(i) + '.jpg';
    [B]if FileExists(FileName) then begin[/B]
      Image1.Picture.LoadFromFile(Filename);

...

      Image1.Picture.Assign(Nil);

      DeleteFile(FileName);
    end;
  end;
end;

needatip 17. Mär 2020 17:41

AW: Löschen von Jpeg Dateien
 
Danke für die Antworten.
Auf den Virenscanner bin ich noch gar nicht gekommen.
Benutze tatsächlich OfficeScan Trend Micro.
Werde gleich mal das Protokoll des Scanners untersuchen und dann berichten.
Ich kann aber auch keinen anderen Virenscanner benutzen, da mein Rechner in einer AD Domain mit Trend Micro Worry Free Business Solution mit ca. 50 Usern eingebunden ist.

needatip 17. Mär 2020 18:47

AW: Löschen von Jpeg Dateien
 
Tatsächlich !
Es war der Virenscanner Trend Micro.:shock:
Der wirft das Ding raus. Im Protokoll heißt die Ursache/Bedrohung "unauthorized file encryption".
Habe jetzt das Verzeichnis und die entsprechende .exe Datei bei der Echtzeitsuche unter Ausnahmen hinzugefügt.
Jetzt läuft es wie geschmiert !

Vielen Dank nochmal für den super Hinweis :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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