AW: Problem mit CopyFile
Hallo,
ein Virenscanner kann schon dafür sorgen, dass das Programm abschmiert. |
AW: Problem mit CopyFile
Da gibts dann noch ShFileOperation als Alternative.
|
AW: Problem mit CopyFile
Wenn der Virenscanner ein Programm Blockiert / Beendet, speichert er das dann nicht in der Historie oder so ab?
So müsste man es doch auch nachvollziehen können. |
AW: Problem mit CopyFile
Delphi-Quellcode:
Gibt das eine gescheite Fehlermeldung?
if CopyFile(..) <> 0 then
RaiseLastOSError Aber so ganz glaub eich nicht, dass es an CopyFile liegt. Wenn sich ein Programm einfach so beendet, dann geht da sehr viel mehr schief als so ein banaler API Funktionsaufruf wie CopyFile. |
AW: Problem mit CopyFile
Zitat:
Warum? Weil du behauptest, daß es beim ersten Mal funktioniert. Für die Serverseite oder das lokale Betriebssystem ist aber "das erste Mal" schon beim zweiten Test deines Programms nicht mehr das erste Mal! Ein AV-Filter könnte natürlich infrage kommen, da er bspw. auf Prozeßebene agieren könnte. Dann wäre aber das Durchlassen der ersten Datei eine Sicherheitslücke und ein solcher Scanner sollte gemieden werden. Der Vollständigkeit halber: ich arbeite seit nunmehr zehn Jahren bei einem AV-Hersteller und bin selbst in der Entwicklung und Wartung des Dateisystemfiltertreibers tätig. Es handelt sich dabei nicht um Trend Micro. Zitat:
Zitat:
In einigen Fällen wird auch das Schließen der Datei abgefangen. Kommt aber auf das exakte Szenario an. Übrigens würde dir jeder normale AV-Scanner ein "Zugriff verweigert" liefern, was noch immer keinen Absturz nach sich zöge, es sei denn du reagiertest darauf nicht adäquat. Zitat:
Mich würde noch interessieren was diese mysteriöse Funktion `ForceDirectories` macht. Und dann noch was auf der Gegenseite läuft. Windows? Samba auf einem Linux? Schonmal probiert das Programm mit procdump.exe zu starten und diesem aufzutragen bitte einen Minidump zu erstellen? Dann könnte man ja mindestens den Call-Stack sehen, auch wenn die Symbole von Delphi bekanntlich nicht kompatibel sind mit Microsoft's Debuggern. |
AW: Problem mit CopyFile
Zitat:
|
AW: Problem mit CopyFile
Zitat:
Zitat:
|
AW: Problem mit CopyFile
Strenggenommen müsste man den Rückgabewert von ForceDirectories abfragen und entsprechend reagieren.
Sollte im konkreten Fall beim Aufruf der Funktion ein Fehler auftreten, dann kracht es halt irgendwo im späteren Ablauf der Routine. Wirklich sauber ist es so, wie es ist nicht, aber auch ein Scheitern von ForceDirectories und die daraus resultierenden Probleme dürften nicht dazu führen, dass sich ein Programm einfach sang- und klanglos verabschiedet. Da muss irgendwo noch was anderes gewaltig schiefgehen, was aber so aus der Ferne nicht zu erkennen ist. |
AW: Problem mit CopyFile
Was Assarbad meint: Der Rückgabewert von ForceDirectories sollte geprüft und eine entsprechende Fehlermeldung ausgegeben werden, wenn sie fehlschlägt.
|
AW: Problem mit CopyFile
Zitat:
Ich habe kein Delphi installiert, aber wie sähe es denn mit etwas in dieser Richtung hier aus?
Delphi-Quellcode:
Ich verstehe zwar noch immer nicht, wozu das "try ... except RaiseLastOSError; end;" gut sein soll, aber nen Grund wird es sicher haben.
function TJobServerForm.VerschiebeEntsprechendEndung(maske: String): Boolean;
var files: TStrings; i: Integer; ziel, zielpfad: String; begin result := False; files:= TStringList.Create; GetFilesMatchInPath(LokalPdfDir, maske, files, false); // Rückgabewert? try for i:=0 to files.Count-1 do begin try memo.Lines.Add(IntToStr(i+1) + '/' + IntToStr(files.Count)+ ' ' + files[i]); zielpfad:= WithBackSlash(PdfDir) + ExportSubDirFromFileName(files[i]); if not DirectoryExists(zielpfad) then begin if not ForceDirectories(zielpfad) then RaiseLastOSError; end; ziel:= zielpfad + ExtractFileName(files[i]); if CopyFile(PChar(files[i]), PChar(ziel), false) then begin if not DeleteFile(files[i]) then RaiseLastOSError; result := True; end; except RaiseLastOSError; end; end; finally files.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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