Hallo zusammen,
ich suche gerade nach verschiedenen Möglichkeiten eine Datei von A nach B zu kopieren.
Bis jetzt hab ich 5 Möglichkeiten:
1.:
Delphi-Quellcode:
FUNCTION TtfMain.QuickCopy ( Quelle, Ziel : STRING ) : BOOLEAN;
VAR
S, T: TFileStream;
BEGIN
Result := TRUE;
S := TFileStream.Create( Quelle, fmOpenRead );
TRY
TRY
T := TFileStream.Create( Ziel, fmOpenWrite OR fmCreate );
EXCEPT
Screen.Cursor := crDefault;
MessageDlg('Fehler beim Erzeugen der Zieldatei'+#13+Ziel, mtError, [mbOK], 0);
Result := FALSE;
END;
TRY
TRY
T.CopyFrom( S, S.Size );
FileSetDate( T.Handle, FileGetDate( S.Handle ) ) ;
{ Dateizeit setzen }
EXCEPT
Screen.Cursor := crDefault;
MessageDlg('Fehler beim Kopieren der Zieldatei'+#13+Ziel, mtError, [mbOK], 0);
Result := FALSE
END;
FINALLY
T.Free
END;
FINALLY
S.Free
END
END;
2.:
CopyFile(PChar(Quelldatei), PChar(Zieldatei), FailIfExists);
3.:
Delphi-Quellcode:
function TtfMain.FileOperation(QuellDatei:string;Zielverz:string;Action:integer):boolean;
var Operation : TSHFileOpStruct;
i : integer;
begin
with Operation do begin
{Parent Window}
wnd:=Application.Handle;
{was soll gemacht werden?}
wFunc:=Action;
{Quelldateien nach pFrom kopieren}
pFrom:=PChar(QuellDatei+#0);
{Zielverzeichnis nach pTo kopieren}
pTo:=PChar(ZielVerz+#0);
{Titel der Fortschrittanzeige}
case Action of
FO_Delete : lpszProgressTitle:='Dateien löschen';
FO_Copy : lpszProgressTitle:='Dateien kopieren';
FO_Move : lpszProgressTitle:='Dateien verschieben';
FO_Rename : lpszProgressTitle:='Dateien umbenennen';
end;
{ Flags für die Aktion einstellen
ohne Fortschrittanzeige:
fFlags:=FOF_AllowUndo or FOF_Silent;
ohne Bestätigung :
fFlags:=FOF_AllowUndo or FOF_NoConfirmation
z.B. klammheimlich in den Papierkorb verschieben:
fFlags:=FOF_AllowUndo or FOF_Silent or FOF_NoConfirmation}
fFlags:=FOF_NoConfirmation or FOF_Silent;
end;
{Und los gehts!}
Result:=SHFileOperation(Operation)=0;
end;
4.:
Delphi-Quellcode:
procedure TtfMain.MemoryStreamCopy(Von,Nach : string);
var
mem : TMemoryStream;
FilePathA, FilePathB : String;
begin
FilePathA := Von; // Pfad der zu kopierenden Datei
FilePathB := Nach; // Zielpfad
mem := TMemoryStream.Create;
try
mem.LoadFromFile(filePathA);
mem.SaveToFile(FilepathB);
finally
mem.Free;
end;
end;
5.:
jclfileutils.FileCopy(Quelldatei,Zieldatei,True); //Eine Funktion der JCL
mich würde jetzt interessieren, ob ihr noch mehr Mothoden kennt eine Datei zu kopieren?
Wäre echt toll wenn ich die hier reinposten würdet!
Vielen Dank