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)