Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#6

AW: Problem mit CopyFile

  Alt 4. Sep 2016, 13:02
Befremdlich das Ganze.

Es gibt auch noch function MoveFile(lpExistingFileName, lpNewFileName: PChar): BOOL; Wäre das mal eine Testalternative?

Dadurch könnte die Kombination von CopyFile und DeleteFile (eventuell) entfallen.

Wo hast Du ShowMessage bzw. Sleep(2000) hingemacht?

Zwischen CopyFile und DeleteFile?

Weiß nicht, wie CopyFile arbeitet. Läuft das Kopieren im Hintergrund oder wartet das Programm, bis CopyFile fertig ist und löscht erst dann mit DeleteFile?

Eventuell trennst Du mal CopyFile und DeleteFile.

Aus der momentanen Routine DeleteFile rausnehmen und erst am Ende in 'ner eigenen Schleife aufrufen?
Delphi-Quellcode:
procedure TJobServerForm.VerschiebePdf;
var
  files: TStrings;
  i:integer;
  ziel, zielpfad: string;
  ok: boolean;
begin
  files := TStringList.Create;
  GetFilesMatchInPath(LokalPdfDir, '*.pdf', files, false);
  try
    for i := files.Count - 1 DownTo 0 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 ForceDirectories(zielpfad);
        ziel := zielpfad + ExtractFileName(files[i]);
        ok := CopyFile(PChar(files[i]), PChar(ziel), false);
      except
        RaiseLastOSError;
      end;
    end;
    for i := files.Count - 1 DownTo 0 do begin
      try
        zielpfad := WithBackSlash(PdfDir) + ExportSubDirFromFileName(files[i]);
        ziel := zielpfad + ExtractFileName(files[i]);
        if FileExists(Ziel) then files.Delete(i);
      except
        RaiseLastOSError;
      end;
    end;
    If files.Count > 0 then begin
      ShowMessage('Es konnten nicht alle Dateien kopiert und gelöscht werden!' + #13#13 + Files.Text);
    end;
  finally
    files.Free;
  end;
end;
  Mit Zitat antworten Zitat