Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter" (https://www.delphipraxis.net/210840-tfile-copy-aufruf-ergibt-fehlermeldung-falscher-parmeter.html)

skoschke 20. Jun 2022 13:02

Delphi-Version: 10.4 Sydney

TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Hallo,

in einer DLL verwende ich TFile.Copy(fromName,toName,true) zum Kopieren von Dateien.

Hier bei mir und auf einem Rechner im Support läuft das alles einwandfrei, nur bei einem Kunden kommt o.g. Fehler.

In einem Try / Except Block lasse ich mir dann den Fehler ausgeben:
LogAusgabe(E.ClassName + ' in Copierfunktion : ' + E.Message + slinebreak + fromName + slinebreak + toName);

Es wird folgendes ausgegeben:
EInOutError in Copierfunktion : Falscher Parameter
H:\214214.pdf
C:\OneDrive\Desktop\758DDE1F-4452-4108-AC2B-C2657DCCDA45.pdf

Ich habe keine Ahnung wo ich da ansetzen könnte!

Bitte um Unerstützung
Ciao
Stefan

TiGü 20. Jun 2022 13:19

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Vorhandensein von Laufwerken (gemappte Netzlaufwerke?), Verzeichnissen und Dateien wird VORHER geprüft?

himitsu 20. Jun 2022 13:26

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Datei/Verzeichnis offline? (OneDrive)

Geht es denn mit einem normalen Verzeichnis?

Rollo62 20. Jun 2022 13:34

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Wenn H:\ ein USB-Laufwerk ist, dann könnte es auch einfach Formatierungsprobleme geben.
Kann man denn mit Explorer dort was hinkopieren ?

Ich hatte schon Fälle wo fremd-formatierte USB-Drives nicht lesbar/schreibbar waren, obwohl sie erstmal ordentlich aussahen und eingebunden waren,
ein Neuformatieren auf dem jeweiligen Rechner hat geholfen.
Am Besten immer vorher Schritt-für-Schritt Testen bis wohin was noch geht (Laufwerkszugriff, Directory, File, Rechte, ....),
je detaillierter die Fehlermeldungen desto besser auf einem Kundenrechner.

PaPaNi 20. Jun 2022 13:35

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
1. Kann es sein, dass die Zieldatei schon existiert und von jemandem geöffnet ist?
Wenn ich das richtig verstehe, dann ist der letzte Parameter(=True) beim File.Copy sorgt dafür, dass die Datei überschrieben sein sollte? Vielleicht liegt es daran?
2. Mit Windows-Explorer funktioniert das Kopieren von diesen Dateien?
3. Und ja, ich hoffe, dass es vor dem Kopieren geprüft wird, ob die Ziel- und Quell-Dateien existieren.

skoschke 20. Jun 2022 14:03

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Ja, es wird geprüft ob die Quelldatei vorhanden ist, dann wird kopiert...

Ich habe ein Testprogramm gebastelt, welches eine Datei, bei der der Fehler auftrat, 1000 mal kopiert.
Beim ca. 200. Mal dann wieder der Fehler und auf dem Server (Laufwerk H) nachsehen lassen und siehe da, da hat sich Norton irgendwie gestört gefühlt, warum auch immer...

Kunde soll jetzt seinen Norton bändigen, an uns liegt es nicht :-)

Ciao
Stefan

Bernhard Geyer 20. Jun 2022 14:29

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Kopierst du evtl. viele Dateien hintereinander?
Dann kann es sein das der Virenscanner nicht mehr hinterher kommt und über ein Veto/Block das kopieren unterbindet.
Hier haben wir mittlerweile ein RetryAfter200ms eingebaut...

skoschke 22. Jun 2022 06:25

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Ja, es werden teilweise sehr viele Dateien hintereinander kopiert...

Wenn da ein Virenscanner "nicht hinterherkommt und blockiert" taugt der meiner Meinung nach nicht...

Ciao
Stefan

Bernhard Geyer 22. Jun 2022 08:53

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Zitat:

Zitat von skoschke (Beitrag 1507614)
Wenn da ein Virenscanner "nicht hinterherkommt und blockiert" taugt der meiner Meinung nach nicht...

Dann taugt Kaspersky und Sophos schon mal nix...

QuickAndDirty 22. Jun 2022 09:15

AW: TFile.Copy Aufruf ergibt Fehlermeldung "Falscher Parmeter"
 
Kaspersky taugt ja auch wirklich nicht...mit seinen ganzen false-positives.
Bei Sophos dachte ich immer es wäre eine Firewall , die haben auch Virenscanner?
Auf jedenfall scheint Sophos für System-Administratoren nicht intuitiv bedienbar zu sein,
weil sie in der Regel mehrere Versuche und mehrere Tage für Portfreigaben brauchen.

Zitat:

Zitat von skoschke (Beitrag 1507614)
Ja, es werden teilweise sehr viele Dateien hintereinander kopiert...

Wenn da ein Virenscanner "nicht hinterherkommt und blockiert" taugt der meiner Meinung nach nicht...

Vielleicht lohnt ein Test mit SHFileOperation
Delphi-Quellcode:
uses Shellapi;

//Does not work in debug mode...unless debugger is setup to handle the c000000005 exception
function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: String;Flags: FILEOP_FLAGS): Integer;
var
  FromPath, ToPath: String;
  SHFileOpStruct: TSHFileOpStruct;
begin
  SetLastError(0);
  ZeroMemory(@SHFileOpStruct,SizeOf(SHFileOpStruct));
  with SHFileOpStruct do
  begin
    wFunc := aOperation;
    pFrom := PAnsiChar(aFrom+ #0#0);
    if aTo <> '' then
    begin
      pTo := PAnsiChar(aTo+ #0#0)
    end else begin // target available
      pTo := nil;
    end; // target not available
    fFlags := Flags;
  end; // structure
  Result := SHFileOperation(SHFileOpStruct);
end;
Delphi-Quellcode:
  if 0 <> DoFileWork(FO_COPY,
             ExcludeTrailingPathDelimiter(SourcePath) ,
             ExcludeTrailingPathDelimiter(DestPath),
             FOF_NOCONFIRMATION or
             FOF_NOCONFIRMMKDIR or
             FOF_RENAMEONCOLLISION)
  then
  Begin
    Error := GetLastError;
    if Error <> 0 then
      ShowMessage('Fehler beim Kopieren nach'+ExcludeTrailingPathDelimiter(DestPath)+' :'+ SysErrorMessage(error) );
  End;
Der Code ist für D2007... also muss evtl für andere Delphis angepasst werden.
SHFileOperation benutzt quasi den windows DateiExplorer und der müsste gut mit dem Virenscanner zusammen arbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.
Seite 1 von 2  1 2   

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