![]() |
Verschiedene Möglichkeiten zum Verschieben von Dateien
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:
2.:
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;
Delphi-Quellcode:
3.:
CopyFile(PChar(Quelldatei), PChar(Zieldatei), FailIfExists);
Delphi-Quellcode:
4.:
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;
Delphi-Quellcode:
5.:
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;
Delphi-Quellcode:
mich würde jetzt interessieren, ob ihr noch mehr Mothoden kennt eine Datei zu kopieren?
jclfileutils.FileCopy(Quelldatei,Zieldatei,True); //Eine Funktion der JCL
Wäre echt toll wenn ich die hier reinposten würdet! Vielen Dank :angel: |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
das klingt echt gut.
ich glaub das hat das zeug für die codelibrary.. zu deiner frage, nein ich wusste noch nicht einmal wie das genau geht. :cry: |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
Naja, für die Codelib ist es bissl zu viel Copy&Paste :zwinker:
und zuviel Rechtschreibfehler, aber falls jemand mehr Methoden kennt bitte posten |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
Wozu brauchst du mehrere Möglichkeiten für ein und dieselbe Aktion :gruebel: ? Zumal das ExceptionHandling im ersten Code ziemlich mies und sogar fehlerhaft ist, Nummer 5 wird wohl auch einfach nur #2 aufrufen (hab nicht nachgeschaut, also ohne Gewehr und Munition).
2. und 3. reichen doch vollkommen. |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
Kopieren über file-of-byte:
Delphi-Quellcode:
var
f,t:file of byte; buf:array[0..4095] of byte; readbytes:integer; begin try begin assignfile(f,VON); reset(f); try begin assignfile(t,NACH); rewrite(t); while not eof(f) do begin blockread(f,buf,length(buf),readbytes); blockwrite(t,buf,readbytes); end; closefile(t); end except try closefile(t) except end; end; closefile(f); end except try closefile(f) except end; end; end; |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
Es könnte ja einfach mal sehr interessant sein zu sehen, was für Möglichkeiten einem geboten werden um an ein Ziel zu kommen, ausserdem möchte ich die verschiedenen Methoden miteinander vergleichen, um die schnellste davon auszuwählen. Deswegn brauch ich ein paar verschiedene
@ ichbins: Danke... :oops: ich hab die schon.. nur vergessen zu posten, trotzdem Danke! meine sieht übrigens so aus:
Delphi-Quellcode:
function TtfMain.CopyAssignFile(AVon,ANach :string):Boolean;
var fq,fz : file of byte; b : array [1..8192] of Byte; lread : integer; begin Result:=True; try try AssignFile(fq,AVon); AssignFile(fz,ANach); Reset(fq); Rewrite(fz); while not eof(fq) do begin BlockRead(fq,b,Length(b),lread); BlockWrite(fz,b,lread); end; finally CloseFile(fq); CloseFile(fz); end; except Result:=False; end; end; |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
Zitat:
|
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
was mich jetzt mal interresieren würde, ist ob es in den verschiedenen methoden
zu unterschieden in der geschwindigkeit kommt. |
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
das geht so.. BASTA!!
|
Re: Verschiedene Möglichkeiten zum Verschieben von Dateien
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz