Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Error 1026 bei ShFileOperation

  Alt 5. Jul 2006, 11:44
Moin Andreas,

ein paar Dinge sind mir aufgefallen.
Das Zielverzeichnis endet auf \. Auch wenn das nichts ausmachen dürfte, wäre es sauberer.

Ausserdem hast Du die Variable FileOpStruct nicht initialisiert.
Da es sich um eine lokale Variable handelt, steht in den nicht von Dir überschriebenen Feldern u.U. Datenmüll.

  FillChar(FileOpStruct,SizeOf(FileOpStruct),0); Sollte noch vor dem Befüllen der Struktur stehen, um die Struktur zu initialisieren.

Der letzte Punkt:
Da Du eh' nur die Dateien eines Verzeichisses kopieren willst, ohne Unterverzeichnis, solltest Du das auch angeben.
Für Deinen Anwendungsfall sähe das bei mir so aus:


Delphi-Quellcode:
function TMain_Form.bitbtn_Upd_ProgClick(Sender: TObject) : integer;

var
  FileOpStruct : TSHFileOpStruct;

begin
  FillChar(FileOpStruct,SizeOf(FileOpStruct),0);
  FileOpStruct.wFunc := FO_COPY;
  FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or FOF_NOERRORUI or FOF_NORECURSION or FOF_SILENT;
  FileOpStruct.pFrom := PChar('J:\Update\Prog\Prog1.exe'+#00);
  FileOpStruct.pTo := PChar('C:\LOG\Daten_Laden\bin\Prog1.exe'+#00);
  Result := SHFileOperation(FileOpStruct);

  if Result <> 0 then exit;

  FillChar(FileOpStruct,SizeOf(FileOpStruct),0);
  FileOpStruct.wFunc := FO_COPY;
  FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or FOF_NOERRORUI or FOF_NORECURSION or FOF_SILENT;
  FileOpStruct.pFrom := PChar('J:\Updates\Daten_Laden\Error\*.*'+#00);
  FileOpStruct.pTo := PChar('C:\LOG\Daten_Laden'+#00);
  Result := SHFileOperation(FileOpStruct);
end;
Die Flags könnten natürlich noch, je nach Bedarf, zusammengestrichen/erweitert werden (z.B. speziell im ersten Teil könnte ein FOF_RENAMEONCOLLISION zusätzlich sinnvoll sein)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat