Einzelnen Beitrag anzeigen

Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#8

AW: SHFileOperation: Wie Dateien mit sehr langem Dateinamen kopieren?

  Alt 25. Feb 2011, 07:27
Okay, mit dieser Funktion sollte dann also das Kopieren von Dateien mit sehr langem Dateinamen klappen:
Delphi-Quellcode:
function ShellFileCopy(const aSource, aDest: string): Integer;
var
  SH: TSHFileOpStructW;
  sSource, sDest: WideString;
begin
  ZeroMemory(@SH, SizeOf(SH));
  sSource := aSource;
  sDest := ExtractFilePath(aDest);

  if (Length(sSource) > MAX_PATH) then
     if (Copy(sSource, 1, 2) = '\\') then
        sSource := '\\?\UNC' + sSource
    else
       sSource := '\\?\' + sSource;

  if (Length(sDest) > MAX_PATH) then
     if (Copy(sDest, 1, 2) = '\\') then
        sDest := '\\?\UNC' + sDest
    else
       sDest := '\\?\' + sDest;

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

    Result := SHFileOperationW(SH);
  finally
     ZeroMemory(@SH, SizeOf(SH));
  end;
end;
Oder ist mir da irgend ein Denkfehler unterlaufen?
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?

Geändert von HeikoAdams (25. Feb 2011 um 08:01 Uhr)
  Mit Zitat antworten Zitat