Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi Programm soll dateien kopieren (https://www.delphipraxis.net/944-delphi-programm-soll-dateien-kopieren.html)

Roland Herberg 29. Sep 2002 21:30


Delphi Programm soll dateien kopieren
 
Hallo,

Ich will gerade ein tool schreiben, welches dateien kopiert. Leider finde ich keinen Befehl, der mir die arbeit erleichtert. Gibt es dafür unter delphi keine befehle? :shock: Das einzige, daß ich gefunden habe ist "afilecopy". leider schreit mein compiler immer, daß er diesen bezeichner nicht kennt. :cry:
Hat das schon mal wer gemacht und kann mir da helfen?

Gruß Roland

thomasdrewermann 29. Sep 2002 21:32

hi,
Der Befehl, den du suchst heisst

Code:
Copyfile(Quell-Datei, Ziel-Datei, Boolean Variable Fileexist);
Ich hoffe es hat geholfen

MFG
Thomas

RomanK 29. Sep 2002 21:32

Da wird man wohl die Befehle von Windows benutzen müssen -> siehe PSDK!

thomasdrewermann 29. Sep 2002 21:36

Also bei mir gehts mit Copyfile...

Roland Herberg 29. Sep 2002 21:39

Danke für die schnelle Hilfe - manchmal sieht man den Wald vor lauter Bäumen nicht!!!
Habs ausprobiert :coder: läuft...

Gruß Roland

Luckie 30. Sep 2002 00:04

Zitat:

Zitat von thomasdrewermann
Also bei mir gehts mit Copyfile...

Witzbold, dass ist die Windows-API-Funktion. :nerd:
Delphi kennt keine Funktionen zum Datei kopieren.

Christian Seehase 30. Sep 2002 00:23

Moin Roland,

und für grössere Mengen auf einmal ginge dann auch noch SHFileOperation, die ist allerdings von den Parametern her unhandlicher.

Roland Herberg 1. Okt 2002 18:50

Zitat:

Zitat von Christian Seehase
Moin Roland,

und für grössere Mengen auf einmal ginge dann auch noch SHFileOperation, die ist allerdings von den Parametern her unhandlicher.

Hallo Christian,
wo kriege ich mehr Info's über SHFileOperation?

Gruß Roland

Luckie 1. Okt 2002 18:55

Link: MSDN - SHFileOperation Function

sakura 1. Okt 2002 23:41

Jetzt endlich noch meine Lösung von D3k: http://www.delphi3000.com/articles/article_1510.asp

R.Meyrat 8. Okt 2002 13:10

Hallo Zusammen
Habe da noch einetn Tip für Win2k Besitzer:
Schaut Euch doch mal das ResourceKit an, da müsste as Proggi RoboCopy dabei sein.
ist "nur* knapp 100KB gross und ist zum Kopieren von vielen Daten geeignet. Kann auch Verzeichnisse etc spiegel usw.

Ist erheblich schneller als die Win-Api etc.

Bauche das Prog um aus einem Delphi Programm ca 4000 Dateien synchron zu halten. Starte "einfach" ein neuer Prozess ...


Habe mal den passenden Code unten für solche dies interessiert.


Gruss Roger

Code:
try
    Screen.Cursor := crHourglass;
    Result := False;
    StatusBar.Panels[1].Text := 'lokales Verzeichnis :' + slocalPath +
      ' wird mit :' + sRemotePath + ' abgeglichen .....';
    if pnlMarker.Color = clBtnface then
      pnlmarker.Color := clRed;
    Application.ProcessMessages;
    sPara := sRemotePath + ' ' + slocalPath + ' ';
      { Source und Destination Verzeichnisse}
    sTemp := saMask[0]; { Filter für Einrichtpläne}
    sTemp := StringReplace(sTemp, ';', ' ', [rfReplaceAll]);
    sPara := SPara + sTemp + ' ';
    sTemp := saMask[1]; { Filter für NC - Programme}
    sTemp := StringReplace(sTemp, ';', ' ', [rfReplaceAll]);
    sPara := sPara + sTemp + ' ';
    sPara := sPara + '/S '; { Inklusive SubDirectorys}
    if LBoxEX_DIR.Items.Count > 0 then begin
      sPara := sPara + '/XD '; { Exclude Directorys}
      for iCounter := 0 to LBoxEX_DIR.Items.Count - 1 do begin
        if trim(LBoxEX_DIR.Items[iCounter]) <> '' then
          sPara := sPara + LBoxEX_DIR.Items[iCounter] + ' ';
      end;
    end;
    sPara := sPara + '/MIR '; {Befehl zum Mirroring}
    sPara := sPara + '/R:10 '; { 10 Versuche die Datei zu kopieren}
    spara := sPara + '/W:10 '; { jeweils 10Sek warten zwischen Versuchen}
    sPara := Spara + '/LOG:' + lbledtLogFile.Text; {und LogDatei erstellen}
    FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
    StartupInfo.cb := Sizeof(TStartupInfo);
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := SW_HIDE;
    if CreateProcess(nil, { Anwendungsname}
      PChar(ExtractFilePath(Application.ExeName) + '\Robocopy.Exe ' + sPara),
    { Parameter}
      nil, { Security}
      nil, { Security}
      False,
      NORMAL_PRIORITY_CLASS, { Priorität}
      nil, { Environment}
      PChar(ExtractFilePath(Application.ExeName)), { Verzeichnis}
      StartupInfo,
      ProcessInfo) then begin
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      CloseHandle(ProcessInfo.hProcess);
    end
    else
      ShowMessage('Fehler beim starten des Kopiervorganges!');
    TimerTimer(self);
    Result := True;
    Screen.Cursor := crDefault;
  except
    Result := False;
    MessageDLG('FEHLER beim Aufruf von Robocopy !' + #10 + #13 +
      ' Funktion : madeLocalCopy()', mtError, [mbOK], 0);
  end;

Christian Seehase 8. Okt 2002 14:01

Moin Roger,

wobei noch anzumerken wäre, dass man bei der Option /MIR sehr darauf aufpassen muss Quelle und Ziel nicht zu vertauschen.
Im Extremfall hat man sonst statt einer Sicherung einen 100%igen Datenverlust.

masters001 23. Dez 2002 18:50

Hallo!
Ich möchte diesen Befehl auch gerne in meinem Programm nutzen haber aber noch folgendes Problem:

CopyFile( Pfad ,'C:\save.dat',false);

In dem String Pfad ist der Pfad zu der Datei gespeichert die ich kopieren möchte!
Aber beim kompilieren kommt eine Fehlermeldung:
Incompatible type String and PChar!

Christian Seehase 23. Dez 2002 19:00

Moin Masters,

erst einmal herzlich willkommen.

Delphi-Quellcode:
CopyFile( PChar(Pfad) ,'C:\save.dat',false);
so sollte es gehen. Ich nehme mal an Pfad ist eine Variable vom Typ string.
Da als erster Parameter ein PChar (also eigentlich ein Pointer auf einen nullterminierten String) erwartet wird, muss man dem Compiler noch mitteilen, dass er den String als PChar verarbeiten soll.

masters001 23. Dez 2002 19:24

Vielen dank für die schnelle hilfe

napstar 19. Mär 2008 13:11

Re: Delphi Programm soll dateien kopieren
 
hi ich hab ein problem..
der compiler findet hier ein fehler.. ich weiß aber garnicht was ich machen soll ^^..
Delphi-Quellcode:
CopyFile(PChar(ExtractFilePath(ParamStr(0) + 'Programm.exe')),(ExtractFilePath(ParamStr(0) + 'Programm.bkp')),false);
das is die fehlermeldung:
[Pascal Fehler] Unit1.pas(219): E2010 Inkompatible Typen: 'string' und 'PAnsiChar'

hoffe jemand kann mir helfen
ich danke euch jetzt schonmal für eure hilfe ^^..

Aurelius 19. Mär 2008 13:50

Re: Delphi Programm soll dateien kopieren
 
Delphi-Quellcode:
CopyFile(PChar(ExtractFilePath(ParamStr(0) + 'Programm.exe')),PChar(ExtractFilePath(ParamStr(0) + 'Programm.bkp')),false);
Du hast das 2. PChar vergessen ;)

napstar 19. Mär 2008 13:53

Re: Delphi Programm soll dateien kopieren
 
hab ich doch???
oder kommt da noch ein pchar ^^

Aurelius 19. Mär 2008 13:54

Re: Delphi Programm soll dateien kopieren
 
Ja, da kommen 2 hin (Ursprungsdatei, Ziel).

napstar 19. Mär 2008 14:25

Re: Delphi Programm soll dateien kopieren
 
ich hab doch schon 2 drinstehen :?: :?: :?: :?: :?:

dominikkv 19. Mär 2008 14:40

Re: Delphi Programm soll dateien kopieren
 
Zitat:

Zitat von napstar
ich hab doch schon 2 drinstehen :?: :?: :?: :?: :?:

in dem Quellcode den du uns gepostet hast steht nur ein mal PChar drin:
Delphi-Quellcode:
CopyFile(PChar{1}(ExtractFilePath(ParamStr(0) + 'Programm.exe')),{vergessen}(ExtractFilePath(ParamStr(0) + 'Programm.bkp')),false);

geofranz01 19. Mär 2008 14:41

Re: Delphi Programm soll dateien kopieren
 
Zitat:

Zitat von napstar
Delphi-Quellcode:
CopyFile(PChar(ExtractFilePath(ParamStr(0) + 'Programm.exe')),(ExtractFilePath(ParamStr(0) + 'Programm.bkp')),false);
ich hab doch schon 2 drinstehen :?: :?: :?: :?: :?:

Ich seh da kein zweites PChar. Aber noch einen anderen "Fehler" bzw. Irrtum: Duch fügst Paramstr(0) und "Programm.exe" zusammen, um dir dann wieder den Pfad ausgeben zu lassen. Irgendwie unlogisch :roll: . Ich denke das ganze sollte so aussehen:


Delphi-Quellcode:
CopyFile(PChar(ExtractFilePath(ParamStr(0)) + 'exDatei.exe'),PChar(ExtractFilePath(ParamStr(0)) + 'newDatei.bkp'),false);
mfg,
geofranz

napstar 19. Mär 2008 14:48

Re: Delphi Programm soll dateien kopieren
 
hääää???

ich war mir zu 2000% sicher, dass da ein 2. PChar drinstand..
sorry ich habe mich wohl geirrt. aber da verliert mann leicht die übersicht bei so vielen klammern :D..
jetzt gehts aufjedenfall danke für eure hilfe


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 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