none
[Delphi 2006] Problem beim Kopieren von Dateien mit SHFileOperation

    Frage

  • Hallo,

    ich habe ein Problem mit SHFileOperation. Sobald der Dateiname eine gewisse Länge überschreitet, bekomme ich den Fehlercode 123 (Datei- oder Verzeichnisname zu lang) zurück geliefert.

    Ich habe schon versucht, das Problem durch voranstellen von '\\?\' zu lösen, jedoch nur mit dem Erfolg, das der Fehlercode danach 124 ist.

    Gibt es andere Möglichkeiten, SHFileOperation dazu zu "überreden", diese Dateien zu kopieren?

    Freitag, 25. Februar 2011 12:59

Antworten

Alle Antworten

  • Hallo OstfrieseInFranken,

    Welches Betriebssystem hast Du? Mit welcher Entwicklersprache wurde die Anwendung erstellt?

    Welchen Error Code von der folgenden Liste bekommst Du? SHFileOperation Function

    Relevanter Code zu posten wäre auch nicht schlecht oder eine .Zip Datei mit den Code (falls der Code zu groß ist) kann man ihm Public Ordner von SkyDrive laden und den link hier Posten. (Wie nutze ich den SkyDrive?)

    Lies bitte auch folgendes: Common Questions Concerning the SHFileOperation API: Part 1

    Grüße,

    Robert

    Freitag, 25. Februar 2011 15:03
    Besitzer
  • Das Betriebssystem auf dem ich entwickle, ist Windows 7 Business, das OS des Kunden, auf dem der Fehler auftritt ist Windows 2003 Server.

    Der Fehlercode ist 123 (ich bekomme von Delphi nur Ganzzahlen als Fehlercode), die Fehlermeldung lautet: "Der Dateiname oder die Erweiterung ist zu lang"

    Entwickeln tu ich mit Delphi 2006.

    Freitag, 25. Februar 2011 15:34
  • Die Delphi-Funktion zum Kopieren der Dateien sieht so aus:

    function ShellFileCopy(const aSource, aDest: string): Integer;
    var
      SH: TSHFileOpStruct;
    begin
      ZeroMemory(@SH, SizeOf(SH));

      try
        with SH do
        begin
          Wnd := 0;
          wFunc := FO_COPY;
          pFrom := PChar(aSource + #0);
          pTo := PChar(aDest + #0);
          fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or
            FOF_SILENT;
        end;

        Result := SHFileOperation(SH);
      finally
       ZeroMemory(@SH, SizeOf(SH));
      end;
    end;

    Freitag, 25. Februar 2011 15:41
  • Hallo Hallo OstfrieseInFranken,

    Kennst Du die folgenden Artikel?

    SHFileOperation: Wie Dateien mit sehr langem Dateinamen kopieren?

    Mehr zu #undef MAX_PATH

    Ich habe diesen Diskussionsfaden im Off-Topic Forum verschoben weil Delphi nicht Microsoft ist und weil wir uns hier in einem Software-Entwickler-Forum von MSDN Online, dem Microsoft Developer Network, befinden.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    Grüße,

    Robert

    Freitag, 25. Februar 2011 16:58
    Besitzer
  • Folge dem Link von Robert und melde dich auf der Delphi Praxis an. Dort wird du rund um Delphi geholfen.

    "A programmer is just a tool which converts caffeine into code" CLIP- Stellvertreter http://www.winvistaside.de/
    Freitag, 25. Februar 2011 21:14