Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CopyFileEx kopiert nicht (https://www.delphipraxis.net/164757-copyfileex-kopiert-nicht.html)

Destroxi 28. Nov 2011 18:39

CopyFileEx kopiert nicht
 
Hi,
ich will Dateien mit CopyFileEx kopieren (mit CopyFileEx da ich ProgressBars eingebaut habe).
Jetzt meine Frage: Warum funktioniert das nicht (es kopiert die Dateien einfach nicht und liefert immer "False" zurück)?
Ich habe den folgenden Code von einer Seite, wo dieser beschrieben war (Beitrag 6, von "fuba").

Ich hoffe ihr könnt mir helfen ;)

Standart Code:
Delphi-Quellcode:
function PProgressRoutine(TotalFileSize,
                            TotalBytesTransferred,
                            StreamSize,
                            StreamBytesTransferred: LARGE_INTEGER;
                            dwStreamNumber,
                            dwCallbackReason: DWORD;
                            hSourceFile,
                            hDestinationFile: THandle;
                            lpData: Pointer): DWORD; stdcall;
begin
  if dwCallbackReason = CALLBACK_STREAM_SWITCH then
    TLMDBiProgressBar(lpData).Scale := TotalFileSize.QuadPart;

  TLMDBiProgressBar(lpData).DarkValue := TotalBytesTransferred.QuadPart;
  Application.ProcessMessages;
  Result := PROGRESS_CONTINUE;
end;

procedure ListCopyProgress(const Files: TStrings; aDestPath: String; TotalProgressBar, CurrentProgressBar: TLMDBiProgressBar);
var
  x, y : integer;
  FCancelled: Boolean;
begin
  FCancelled := False;
  x:=Files.Count;
  TotalProgressBar.MinValue := 0;
  TotalProgressBar.Scale := x;
  for y:=0 to x-1 do
  begin
   CopyFileEx(PChar(Files[y]), PChar(ExtractFileDir(aDestPath)+'\'+ExtractFileName(Files[y])),
    @PProgressRoutine, CurrentProgressBar, @FCancelled, 0);
     TotalProgressBar.DarkValue := y+1;
     TotalProgressBar.Update;
     CurrentProgressBar.Update;
 end;
end;
Anwendung:
Delphi-Quellcode:
ListCopyProgress(Dateien, edZielPfad.Text, pbGesamt, pbAktiveDatei);
Was geht hier schief?

Edit: TLMDBiProgressBar fast genauso wie TProgressBar nur bisschen verbessert;
MinValue = TProgressBar.min
Scale = TProgressBar.max
DarkValue = TProgressBar.position

Danke :)

Luckie 28. Nov 2011 18:43

AW: CopyFileEx kopiert nicht
 
Aus der Hilfe:
Zitat:

Copies an existing file to a new file
Wenn ich aber deinen Code sehe:
Delphi-Quellcode:
CopyFileEx(PChar(Files[y]), PChar(ExtractFileDir(aDestPath)+'\'+ExtractFileName(Files[y]))
gibst du als Ziel keinen Dateinamen an.

DeddyH 28. Nov 2011 18:47

AW: CopyFileEx kopiert nicht
 
Was soll ExtractFilename denn sonst zurückgeben? OK,
Zitat:

Delphi-Quellcode:
ExtractFileDir(aDestPath)+'\'

ist Quark, da ExtractFilePath den Backslash mit zurückliefert, aber daran kann es kaum liegen.

Luckie 28. Nov 2011 19:00

AW: CopyFileEx kopiert nicht
 
Mist. Das war ein Blackout. Ich nehme alles wieder zurück.

Destroxi 28. Nov 2011 19:01

AW: CopyFileEx kopiert nicht
 
Das mit ExtractFilePath ausgebessert.
Klappt immer noch nicht - wie du gesagt hast^^ :x

Luckie 28. Nov 2011 19:04

AW: CopyFileEx kopiert nicht
 
Speicher die Pfade mal in Variablen zwischen und guck dir deren Inhalt an. Und was sagt GetLastError, wenn CopyFileEx False zurückliefert?

Destroxi 28. Nov 2011 19:11

AW: CopyFileEx kopiert nicht
 
Am Anfang warn es die Variablen (Pfade waren gleich) jetzt sind die Pfade unterschiedlich, aber es kommt immernoch ein Error (voher 32) und zwar "1235"...
Was bedeutet der ?

PS: Ich fang schonma an zu googlen ;)

Vielen Dank für die Hilfe bisher!

Mfg, Destroxi

Bummi 28. Nov 2011 19:11

AW: CopyFileEx kopiert nicht
 
der teil läuft ....

Delphi-Quellcode:
   CopyFileEx(PChar(Files[y]), PChar(IncludeTrailingBackSlash(aDestPath)+ExtractFileName(Files[y])),
    nil, nil, nil, 0);

Luckie 28. Nov 2011 19:13

AW: CopyFileEx kopiert nicht
 
Code:
C:\Dokumente und Einstellungen\Michael>net helpmsg 32

Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess
 verwendet wird.


C:\Dokumente und Einstellungen\Michael>
Und es wäre auch nicht ganz so dumm, eine Fehlerbehandlung in den Code einzubauen. Oder kannst du was damit anfangen, wenn dich der Kunde anruft und sagt: "Geht nicht", weil du keine Fehlermeldung ausgibst?

Destroxi 28. Nov 2011 19:16

AW: CopyFileEx kopiert nicht
 
Code:
C:\Dokumente und Einstellungen\Destroxi>net helpmsg 1235

Die Anforderung wurde abgebrochen
Mhh... fragt sich bloß warum :|

Weiß da wer was?

Zitat:

der teil läuft ....

markieren
Delphi-Quellcode:
CopyFileEx(PChar(Files[y]), PChar(IncludeTrailingBackSlash(aDestPath)+ExtractF ileName(Files[y])),
nil, nil, nil, 0);
Werd ich gleich mal ausprobieren...

Mfg, Destroxi


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 Uhr.
Seite 1 von 2  1 2      

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