![]() |
Mit Delphi Dateien kopieren
Hi
Ich arbeite gerade an einem Projekt, dass (für ein eigenes Spiel) eine Mapauswahl darstellt, deshalb benötige ich eure Hilfe: Wie kann ich eine Datei in einen anderen Ordner kopieren (nicht verschieben), und dass die ältere Datei dadurch ersetzt wird? :gruebel: Beispiel: Die Datei "Beispielmap.lmu" aus dem Ordner "Data\Maps\" soll in den Ordner "Data\" kopiert werden und die dort befindliche Datei "Beispielmap.lmu" überschreiten. Mein Versuch, die Datei in einem Memo einzufügen und dessen Inhalt dann als "Beispielmap.lmu" zu speichern ist leider schief gegangen :oops: (War auch nur ein Test) :P . Ich würde mich freuen wenn ihr mir antworten würdet^^ :mrgreen: |
Re: Mit Delphi Dateien kopieren
Hallo, versuch es mal mit CopyFile (Win32-API).
|
Re: Mit Delphi Dateien kopieren
Hallo
Danke für die schnelle Antwort. Könntest du mir ein Quellcode beispiel machen, wie es in Delphi aussehen soll, am besten indem du die oben genannten Dateien und Pfade u.s.w. benutzt. Wäre echt nett. :wink: |
Re: Mit Delphi Dateien kopieren
Delphi-Quellcode:
//Edit: War ein Fehler drin, es muss natürlich "not Ueberschreiben" heißen :oops:
function DateiKopieren(const Quelle, Ziel: string; Ueberschreiben: Boolean = true): Boolean;
begin Result := CopyFile(PChar(Quelle),PChar(Ziel),not Ueberschreiben); end; |
Re: Mit Delphi Dateien kopieren
Das scheint bei mir nicht zu funktionieren :wall:
hab wahrscheinlich irgendetwas falsch gemacht. Verdammt! Ich hab jetzt die "function" in meinem Quelltext hinzugefügt, wie kann ich diese jetzt aufrufen :oops: ? Hab glaub ich nicht erwählt, dass ich noch ein Anfänger bin :wink: |
Re: Mit Delphi Dateien kopieren
Kann es sein, dass evtl. die Unit ShellAPI eingebunden werden muß? :gruebel:
SCRaT |
Re: Mit Delphi Dateien kopieren
:wiejetzt:
|
Re: Mit Delphi Dateien kopieren
Hallo,
normalerweise ruft man Funktionen mit ihrem Namen auf. Also in diesem Beispiel mit:
Delphi-Quellcode:
Und wenn du eine Unit einbinden willst, schreibst du sie einfach in den uses-Teil.
DateiKopieren(Quelle, Ziel, Ueberschreiben (true oder false) );
Delphi-Quellcode:
Gruß
uses windows, string..., ShellApi;
Stefan |
Re: Mit Delphi Dateien kopieren
Zitat:
Gruß Neutral General |
Re: Mit Delphi Dateien kopieren
Tut mir wirklich leid, aber ich verstehe nicht so ganz.
Am meisten verwirrt mich dieses "Result": Zitat:
Ich wollte eigendlich nur eine Datei in einen anderen Ordner kopieren :mrgreen: Trotzdem zu allen: Danke für eure Mühe! |
Re: Mit Delphi Dateien kopieren
Hi,
dir fehlen jegliche Grundlagen. Arbeite mal ![]() |
Re: Mit Delphi Dateien kopieren
Danke werde ich mich sofort dransetzen.
|
Re: Mit Delphi Dateien kopieren
Also
Beispiel:
Delphi-Quellcode:
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.
CopyFile(PChar('C:\Datei.dat'),PChar('C:\Programme\Datei.dat'),false);
DeddyH hat das ganze nur in eine eigene Funtkion gpackt:
Delphi-Quellcode:
Aufruf:
function DateiKopieren(const Quelle, Ziel: string; Ueberschreiben: Boolean = true): Boolean;
begin Result := CopyFile(PChar(Quelle),PChar(Ziel),not Ueberschreiben); end;
Delphi-Quellcode:
ergibt das gleiche wie oben.
DateiKopieren('C:\Datei.dat','C:\Programme\Datei.dat',true);
Jede Funktion hat ein Ergebnis. Dieses Ergebnis muss man der Funktion zuweisen. Entweder nimmt man den Functionsnamen oder man nimmt "Result". Beispiel
Delphi-Quellcode:
oder eben
function Addieren(a,b: Integer): Integer;
begin Result := a + b; end;
Delphi-Quellcode:
Aufrufen tut man die function dann so:
function Addieren(a,b: Integer): Integer;
begin Addieren := a + b; end;
Delphi-Quellcode:
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.
var Ergebnis: Integer;
begin Ergebnis := Addieren(5,3); end; =>
Delphi-Quellcode:
Ich hoffe ich konnte da etwas Klarheit in die Sache bringen ;)
if CopyFile(PChar('C:\Datei.dat'),PChar('C:\Programme\Datei.dat'),false) then
ShowMessage('Datei erfolgreich kopiert!') else ShowMessage('Fehler beim kopieren!'); Gruß Neutral General |
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:
aufrufen. Inwieweit das sinnvoll ist, muss jeder selber wissen. So, nun mach ich aber Feierabend für heute.
DateiKopieren('C:\Quelle.txt','C:\Ziel.txt');
|
Re: Mit Delphi Dateien kopieren
Ahhh, jetzt hab ich es verstanden.
Danke :cheers: :dancer: :dancer: :dancer2: |
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:
Wenn du die Funktion einfach nur "so" in den Codeabschnitt reinschreibst, ohne sie oben zu definieren, ist das "schlampig programmiert".
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 |
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? |
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 |
Re: Mit Delphi Dateien kopieren
Hi!
Ich wollte den Ordner nicht verschieben, sondern kopieren. Trotzdem danke. |
Re: Mit Delphi Dateien kopieren
Halloooo jemand da? :roteyes:
|
Re: Mit Delphi Dateien kopieren
|
Re: Mit Delphi Dateien kopieren
In diesem Link sucht doch auch einer nach dem Befehl :gruebel: .
Weiß jemand zufällige wie der Befehl jetzt entgültig geht, ein ganzes Verzeichniss + Dateien zu kopieren??? |
Re: Mit Delphi Dateien kopieren
Delphi-Quellcode:
versuchs mal hiermit, sollte eigentlich klappen hab ich hier gefunden:
uses shellapi;
function CopyDir(const fromDir, toDir: string): Boolean; var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; fFlags := FOF_FILESONLY; pFrom := PChar(fromDir + #0); pTo := PChar(toDir) end; Result := (0 = ShFileOperation(fos)); end; ![]() |
Re: Mit Delphi Dateien kopieren
Hallo,
so sollte es funktionieren:
Delphi-Quellcode:
Gruß Hawkeye
uses shellapi;
function CopyDir(const fromDir, toDir: string): Boolean; var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; // fFlags := FOF_FILESONLY; fFlags := 0; pFrom := PChar(fromDir + #0); pTo := PChar(toDir) end; Result := (0 = ShFileOperation(fos)); end; begin CopyDir ('C:\From', 'C:\To'); // kopiert mit Quellordner CopyDir ('C:\From\*.*', 'C:\To'); // kopiert Inhalt des Quellordners end |
Re: Mit Delphi Dateien kopieren
Hi
Kopiert der beim ersten
Delphi-Quellcode:
Jetzt den Ordner sammt Inhalt oder nur den Ordner?
CopyDir ('C:\From', 'C:\To'); // kopiert mit Quellordner
|
Re: Mit Delphi Dateien kopieren
@Hawkeye219:
Hat sich schon erledigt. Danke hat alles bestens geklappt. Vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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