Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kann man auch Ordner kopieren??? (https://www.delphipraxis.net/8631-kann-man-auch-ordner-kopieren.html)

DeddyH 6. Dez 2010 09:25

AW: Kann man auch Ordner kopieren???
 
Zitat:

Delphi-Quellcode:
if DirectoryExists(backup_new) then MoveFile(backup_old, backup_new);

Hast Du hier evtl. die Parameter verwechselt? backup_old ist ja gelöscht, wenn ich das richtig sehe.

himitsu 6. Dez 2010 09:35

AW: Kann man auch Ordner kopieren???
 
Delphi-Quellcode:
except
  Result := False;
end;
Abgesehn davon, daß man sowas eigentlich nicht macht.
SHFileOperation wirft keine Exceptions ... jedenfalls nicht, wenn nichts extrem schlimmes passiert ist und sowas sollte man nicht einfach so verdecken/ignorieren.

SHFileOperation hat ja auch ein Ergebnis.
Wie wäre es, wenn du von mal die Results von MoveFile und Sh_FileCopyMove auswertest und bei einem False über MSDN-Library durchsuchenGetLastError /
Delphi-Quellcode:
SysErrorMessage(GetLastError)
den geneueren Fehlergrund nachsiehst?

Kieni 6. Dez 2010 09:49

AW: Kann man auch Ordner kopieren???
 
@DeddyH
Code:
if DirectoryExists(backup_new) then MoveFile(backup_old, backup_new);
stimmt ... es muss so sein:

Code:
if DirectoryExists(backup_new) then MoveFile(backup_new, backup_old);
thanks...

@himitsu
noch eine Frage: Wie/Wo kann ich den letzte Error auswerten lassen? In dieser Funktion?

Diese Funktion sollte einfach nur diesen Befehl ausführen:
Code:
// md Backup-FSS
// xcopy "R:\*.*" .\Backup-FSS\ /e
Code:
function Sh_FileCopyMove(aWND: HWND; const Source,Dest: string; DoMove: boolean;
 var IsAborted: boolean; Flags: FILEOP_FLAGS=0): Boolean;
var
  fos : TSHFileOpStruct;
  s,d: String;
begin
  Result:= False;
  if (Source='') or (Dest='') then exit;
  s:= Source;
  d:= Dest;
  if Source[Length(S)]<> #0 then S:=S+ #0;
  if D[Length(D)]<> #0 then D:=D+ #0;
  ZeroMemory(@fos,SizeOf(fos));
  with fos do
  begin
    Wnd:= aWND;
    If DoMove then wFunc:= FO_Move
    else wFunc:= FO_COPY;
    if Flags=1 then fFlags:=FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI
    else fFlags:=Flags;
    fAnyOperationsAborted:= IsAborted;
    pFrom:=PChar(S);
    pTo:=PChar(D);
  end;
  Result:= SHFileOperation(fos)=0;
  IsAborted:= fos.fAnyOperationsAborted;
end;
es ist zum heulen :D

Kieni 6. Dez 2010 10:05

AW: Kann man auch Ordner kopieren???
 
Code:
if not Sh_FileCopyMove(Application.Handle, backup_this, backup_new, False, IsAborted) then
begin
  ShowMessage(SysErrorMessage(GetLastError));
end
else
  ShowMessage('Funktioniert');
end;
Also hier bringt er mir die Fehlermeldung: "The Hadle is invalid"

hab es schon geändert nach Application.handle...

hmm

Luckie 6. Dez 2010 10:11

AW: Kann man auch Ordner kopieren???
 
Delphi-Quellcode:
procedure Sh_FileCopyMove(aWND: HWND; const Source,Dest: string; DoMove: boolean;
 var IsAborted: boolean; Flags: FILEOP_FLAGS=0);
var
  fos : TSHFileOpStruct;
  s,d: String;
begin
  Result:= False;
  if (Source='') or (Dest='') then exit;
  s:= Source;
  d:= Dest;
  if Source[Length(S)]<> #0 then S:=S+ #0;
  if D[Length(D)]<> #0 then D:=D+ #0;
  ZeroMemory(@fos,SizeOf(fos));
  with fos do
  begin
    Wnd:= aWND;
    If DoMove then wFunc:= FO_Move
    else wFunc:= FO_COPY;
    if Flags=1 then fFlags:=FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI
    else fFlags:=Flags;
    fAnyOperationsAborted:= IsAborted;
    pFrom:=PChar(S);
    pTo:=PChar(D);
  end;
  if not (SHFileOperation(fos) = 0) then
    RaiseLastOSError;
  IsAborted:= fos.fAnyOperationsAborted;
end;
Delphi-Quellcode:
try
  Sh_FileCopyMove(...);
except
  on E: Exception do
    ShowMessage(E.Message);
end;

DeddyH 6. Dez 2010 10:12

AW: Kann man auch Ordner kopieren???
 
procedure -> function ;)

Luckie 6. Dez 2010 10:18

AW: Kann man auch Ordner kopieren???
 
Auf dem keinen Netbook Bildschirm habe ich einfach keine Übersicht. :(

Kieni 6. Dez 2010 10:19

AW: Kann man auch Ordner kopieren???
 
Ich bedanke mich schonmal bei euch!

folgender Fehler:
Zitat:

Systemfehler. Code: 6
The handle is invalid
Welches handle? Welches soll ich denn da übergeben ?

Luckie 6. Dez 2010 10:21

AW: Kann man auch Ordner kopieren???
 
Na das vom Fenster:
Delphi-Quellcode:
Form1.Handle
.

Kieni 6. Dez 2010 10:27

AW: Kann man auch Ordner kopieren???
 
hmm...
das hatte ich schon porbiert...
Wenn ich dann den Button drücke, kommt zuerst:
Zitat:

Cannot copy file: Cannor read from the source file or disk.
Dannach wieder:
Zitat:

Systemfehler. Code: 6
The handle is invalid
Der Aufruf der Funktion:
Code:
try
  Sh_FileCopyMove(Form1.Handle, backup_this, backup_new, False, IsAborted);
except
  on E: Exception do
    ShowMessage(E.Message);
end;
irgendwie läuft das alles nicht, und ich steh momentan voll auf dem Schlauch. Kann es etwas damit zu tun haben, dass backup_this ein Netzlaufwerk (R:) ist?

Gruß Kieni


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz