Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mit Delphi Dateien kopieren (https://www.delphipraxis.net/93745-mit-delphi-dateien-kopieren.html)

Matze 10. Jun 2007 20:11

Re: Mit Delphi Dateien kopieren
 
Hi,

dir fehlen jegliche Grundlagen. Arbeite mal diesen Crashkurs durch. Da wird auf Funktionen und ähnliches genau eingegangen.

FreakLitkowsky 10. Jun 2007 20:21

Re: Mit Delphi Dateien kopieren
 
Danke werde ich mich sofort dransetzen.

Neutral General 10. Jun 2007 20:21

Re: Mit Delphi Dateien kopieren
 
Also

Beispiel:

Delphi-Quellcode:
CopyFile(PChar('C:\Datei.dat'),PChar('C:\Programme\Datei.dat'),false);
Das kopiert die Datei Datei.dat von C:\ nach C:\Programme\. Der letzte Parameter an gibt an ob der Vorgang fehlschlägt wenn die Zieldatei schon existiert. Also false bedeutet überschreiben.

DeddyH hat das ganze nur in eine eigene Funtkion gpackt:

Delphi-Quellcode:
function DateiKopieren(const Quelle, Ziel: string; Ueberschreiben: Boolean = true): Boolean;
begin
  Result := CopyFile(PChar(Quelle),PChar(Ziel),not Ueberschreiben);
end;
Aufruf:

Delphi-Quellcode:
DateiKopieren('C:\Datei.dat','C:\Programme\Datei.dat',true);
ergibt das gleiche wie oben.

Jede Funktion hat ein Ergebnis. Dieses Ergebnis muss man der Funktion zuweisen. Entweder nimmt man den Functionsnamen oder man nimmt "Result".

Beispiel

Delphi-Quellcode:
function Addieren(a,b: Integer): Integer;
begin
  Result := a + b;
end;
oder eben

Delphi-Quellcode:
function Addieren(a,b: Integer): Integer;
begin
  Addieren := a + b;
end;
Aufrufen tut man die function dann so:

Delphi-Quellcode:
var Ergebnis: Integer;
begin
  Ergebnis := Addieren(5,3);
end;
Die function CopyFile hat auch ein Ergebnis.. Aber vom Typ Boolean (true/false). True bedeutet das die Datei erfolgreich kopiert wurde, false bedeutet einen Fehlschlag.

=>

Delphi-Quellcode:
if CopyFile(PChar('C:\Datei.dat'),PChar('C:\Programme\Datei.dat'),false) then
  ShowMessage('Datei erfolgreich kopiert!')
else ShowMessage('Fehler beim kopieren!');
Ich hoffe ich konnte da etwas Klarheit in die Sache bringen ;)

Gruß
Neutral General

DeddyH 10. Jun 2007 20:24

Re: Mit Delphi Dateien kopieren
 
Super erklärt :thumb: , aber ein kleiner Nachtrag: meine Funktion kann mit 2 oder 3 Parametern aufgerufen werden. Die beiden Pflicht-Parameter sind die Dateinamen. Wenn der 3. Parameter nicht angegeben wird, wird davon ausgegangen, dass die Datei überschrieben werden soll.

//Edit: Nachtrag zum Nachtrag: Obwohl es sich um eine Funktion (also mit Rückgabewert) handelt, muss dieser Rückgabewert nicht zwingend ausgewertet werden. Falls es den Threadsersteller also nicht interessieren sollte, ob die Datei kopiert wurde, kann er die Zuweisung auch sein lassen und einfach (Beispiel)
Delphi-Quellcode:
DateiKopieren('C:\Quelle.txt','C:\Ziel.txt');
aufrufen. Inwieweit das sinnvoll ist, muss jeder selber wissen. So, nun mach ich aber Feierabend für heute.

FreakLitkowsky 10. Jun 2007 21:14

Re: Mit Delphi Dateien kopieren
 
Ahhh, jetzt hab ich es verstanden.

Danke :cheers: :dancer: :dancer: :dancer2:

ichbins 10. Jun 2007 21:26

Re: Mit Delphi Dateien kopieren
 
Und noch was:

Wenn du die Funktion nur einfach einfügst, kannst du sie nur von Codestellen aus aufrufen, die unterhalb davon liegen.

Damit du die Funktion auch woanderst aufrufen kannst, musst du ihre "Titelzeile" noch oben in den Interface-Teil einfügen, also inetwa so:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

//hier einfügen
function DateiKopieren(const Quelle, Ziel: string; Ueberschreiben: Boolean = true): Boolean;

var
  Form1: TForm1;

implementation

{$R *.dfm}


(...)


//und hier unten dann die komplette funktion rein
Wenn du die Funktion einfach nur "so" in den Codeabschnitt reinschreibst, ohne sie oben zu definieren, ist das "schlampig programmiert".

FreakLitkowsky 13. Jun 2007 11:21

Re: Mit Delphi Dateien kopieren
 
Okay ich habs jetzt einigermaßen verstanden.

Jetzt hab ich eine neue Frage :lol: :
Wie kann ich ein ganzes Verzeichniss (Also einen Ordner plus Daten) kopieren?

SaFu 13. Jun 2007 11:25

Re: Mit Delphi Dateien kopieren
 
Hiermit

Uses ShellApi
Delphi-Quellcode:
function TForm7.MoveDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_MOVE;
    fFlags := FOF_FILESONLY;
    pFrom := PChar(fromDir + von Deinem ordner;
    pTo   := PChar(toDir zu diesem Ordner;
  end;
  Result := (0 = ShFileOperation(fos));
  Timer1.Enabled:= False;
end;
Delphi-Quellcode:
procedure TForm7.ordnerverschieben;
Var pFrom,pTo :String;
begin
    if MoveDir(pFrom,pTo) = True then

FreakLitkowsky 13. Jun 2007 15:27

Re: Mit Delphi Dateien kopieren
 
Hi!
Ich wollte den Ordner nicht verschieben, sondern kopieren.
Trotzdem danke.

FreakLitkowsky 15. Jun 2007 20:33

Re: Mit Delphi Dateien kopieren
 
Halloooo jemand da? :roteyes:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
Seite 2 von 3     12 3      

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