Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#15

AW: PDF-Datein nach Datenbankvorgabe verschieben

  Alt 28. Mai 2015, 09:17
Wieso gibst du eigentlich DirectoryExists und CreateDir einen Pfad ("Path" mit abschließendem "\") und kein Verzeichnis ("Dir") ?

Wenn man das mal halbwegs irdentlich formatiert ... Warum wird das Break nur gemacht, wenn das Verzeichnis existierte, aber die Datei nicht?
Wenn das Verzeichnis nicht existiert, dann existiert die Datei doch auch nicht.
Delphi-Quellcode:
if not DirectoryExists('C:\pdfbenannt\'+dirname+'\') then
  CreateDir('C:\pdfbenannt\'+dirname+'\')
else
  if not FileExists('C:\pdfbenannt\'+fname+'.pdf') then
    Break
  else
    {nix};
Warum eigentlich zwei Schleifen und wieso nur in der Ersten das Break?
Wenn man jetzt eine Fehlerprüfung einfügt, würde einem das schön auf die Füsse fallen, da die Funktion natürlich den Fehler "Datei existiert nicht" wirft.

Tipp: Delphi-Referenz durchsuchenForceDirectories

verfrachtet die Dateien jedoch nicht hinein. Kann mir jetzt jemand weiter helfen?
Nee, aber warum fragst du RenameFile nicht? Das weiß doch das Warum und nennt es dir auch.

Delphi-Quellcode:
procedure TForm1.btnstartSortClick(Sender: TObject);
var
  i: Integer;
  fname, dirname: string;
begin
  for i := 1 to 248 do begin
    fname := StringGrid.Cells[1, i];
    dirname := StringGrid.Cells[2, i];
    if not FileExists('C:\pdfbenannt\'+fname+'.pdf') then
      Break; // oder Continue?
    ForceDirectories('C:\pdfbenannt\'+dirname);
    if not RenameFile('C:\pdfbenannt\'+dirname+'.pdf','C:\pdfbenannt\'+dirName+'\'+fname+'.pdf') then
      RaiseLastOSError;
  end;
  ShowMessage(fertig');
end;
Delphi-Referenz durchsuchenRaiseLastOSError oder Delphi-Referenz durchsuchenRaiseLastWin32Error (in alten Delphis), bzw. MSDN-Library durchsuchenGetLastError und Delphi-Referenz durchsuchenSysErrorMessage
oder Delphi-Referenz durchsuchenTDirectory.CreateDirectory + Delphi-Referenz durchsuchenTFile.Move (CreateDirectory = ForceDirectories).
$2B or not $2B

Geändert von himitsu (28. Mai 2015 um 09:20 Uhr)
  Mit Zitat antworten Zitat