![]() |
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; |
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. |
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! |
Moin Masters,
erst einmal herzlich willkommen.
Delphi-Quellcode:
so sollte es gehen. Ich nehme mal an Pfad ist eine Variable vom Typ string.
CopyFile( PChar(Pfad) ,'C:\save.dat',false);
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. |
Vielen dank für die schnelle hilfe
|
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:
das is die fehlermeldung:
CopyFile(PChar(ExtractFilePath(ParamStr(0) + 'Programm.exe')),(ExtractFilePath(ParamStr(0) + 'Programm.bkp')),false);
[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 ^^.. |
Re: Delphi Programm soll dateien kopieren
Delphi-Quellcode:
Du hast das 2. PChar vergessen ;)
CopyFile(PChar(ExtractFilePath(ParamStr(0) + 'Programm.exe')),PChar(ExtractFilePath(ParamStr(0) + 'Programm.bkp')),false);
|
Re: Delphi Programm soll dateien kopieren
hab ich doch???
oder kommt da noch ein pchar ^^ |
Re: Delphi Programm soll dateien kopieren
Ja, da kommen 2 hin (Ursprungsdatei, Ziel).
|
Re: Delphi Programm soll dateien kopieren
ich hab doch schon 2 drinstehen :?: :?: :?: :?: :?:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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