Einzelnen Beitrag anzeigen

Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Error 1026 bei ShFileOperation

  Alt 13. Jun 2006, 16:58
nachdem ich des jetzt mit SHFileOperation net hinbekommen hab was ich machen wollt, hab ich mir mehrere funktionen und proceduren programmiert die des ganze für mich erledigen...

hier mein code, vielleicht kanns jemand anders au mal gebrauchen

Delphi-Quellcode:
procedure TMain_Form.bitbtn1Click(Sender: TObject);

var
sDir, sFolderError, sFromDir, sSearchDir, sToDir : String;
bl : Boolean;

begin


  
  // Copy Error Folder [If not Exists, Create Error Folder, Copy Files]
  sDir := 'C:\LOG\Daten_Laden\Error';
  bl := fnDirExists(sDir);

  If bl = False Then
  Begin
    CreateDir(sDir); // Ordner anlegen
  End
  Else
  Begin
    prCheck_ClearFiles(sDir);//Ordner ist bereits vorhanden, Files aus Ordner löschen!
  End;

  sFromDir := 'J:\Update\Prog1\Error\';
  sSearchDir := 'J:\Update\Prog1\Error\*.txt';
  sToDir := 'C:\LOG\Daten_Laden\Error\';
  prCopyFiles(sFromDir, sSearchDir, sToDir);

  ProgBar.Position := 60;


  // Copy File Folder [If not Exists, Create File Folder, Copy Files]
  sDir := 'C:\LOG\Daten_Laden\Files';
  bl := fnDirExists(sDir);

  If bl = False Then
  Begin
    CreateDir(sDir);
  End
  Else
  Begin
    prCheck_ClearFiles(sDir);
  End;

  sFromDir := 'J:\Update\Prog1\Files\';
  sSearchDir := 'J:\Update\Prog1\Files\*.txt';
  sToDir := 'C:\LOG\Daten_Laden\Files\';
  prCopyFiles(sFromDir, sSearchDir, sToDir);

  ShowMessage('Update was Successful');

end;

//******************************************************************************
// Examine Folder Exists
//******************************************************************************

function TMain_Form.fnDirExists(sDir : String) : Boolean;

begin

  fnDirExists := DirectoryExists(sDir);      // Prüft ob Ordner bereits angelegt wurde

end;

//******************************************************************************
// Clear Files From Folder
//******************************************************************************

procedure TMain_Form.prCheck_ClearFiles(sDir : String);

var
iAtr, iRC : Integer;
sPath, sFile : String;
recDat : TSearchRec;
bl : Boolean;

begin

  sPath := sDir + '\*.txt';
  iAtr := faAnyFile;

  iRC := FindFirst(sPath, iAtr, recDat);   // Erste Datei suchen

  If iRC = 0 Then            // Datei gefunden
  Begin
    sFile := sDir + '\' + recDat.Name;
    bl := DeleteFile(sFile);         // Datei löschen
    If bl = False Then
    Begin
      ShowMessage('Could Not Delete: ' + sFile);
    End;
  End;

  While iRC = 0 Do      
  Begin
    iRC := FindNext(recDat);         // Nach weiteren Dateien suchen
    If iRC = 0 Then
    Begin
      sFile := sDir + '\' + recDat.Name;
      bl := DeleteFile(sFile);         // Weitere Dateien vorhanden, Dateien löschen
      If bl = False Then
      Begin
        ShowMessage('Could Not Delete: ' + sFile);
      End;
    End;
  End;

  FindClose(recDat);            // Ende der Suche

end;

//******************************************************************************
// Copy Files From Dir --> To Dir
//******************************************************************************

procedure TMain_Form.prCopyFiles(sFromDir, sSearchDir, sToDir : String);

var
iAtr, iRC : Integer;
sPath : String;
recDat : TSearchRec;
strFrom, strTo : TStream;

begin

  iAtr := faAnyFile;
  sPath := sSearchDir;

  iRC := FindFirst(sPath, iAtr, recDat);      // Erste Datei im 'Von' Ordner suchen

  If iRC = 0 Then               // Datei kopieren
  Begin
    strFrom := TFileStream.Create(sFromDir + recDat.Name, fmOpenRead);
    Try
      strTo := TFileStream.Create(sToDir + recDat.Name, fmCreate);
      Try
        strTo.CopyFrom(strFrom, strFrom.Size);
      Finally
        strTo.Free;
      End;
    Finally
      strFrom.Free;
    End;
  End;

  While iRC = 0 Do
  Begin
    iRC := FindNext(recDat);            // Nächste Datei suchen
    If iRC = 0 Then               // Datei kopieren
    Begin
      strFrom := TFileStream.Create(sFromDir + recDat.Name, fmOpenRead);
      Try
        strTo := TFileStream.Create(sToDir + recDat.Name, fmCreate);
        Try
          strTo.CopyFrom(strFrom, strFrom.Size);
        Finally
          strTo.Free;
        End;
      Finally
        strFrom.Free;
      End;
    End;
  End;

  FindClose(recDat);               // Ende der suche / des kopierens

end;
wer fragen hat kann sich gerne melden
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat