Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kopieren von Dateien während zugriff ..??? (https://www.delphipraxis.net/62096-kopieren-von-dateien-waehrend-zugriff.html)

ozi 31. Jan 2006 00:40


Kopieren von Dateien während zugriff ..???
 
Halli Hallo, Problemchen :

Delphi-Quellcode:
function CopyFileEx(const ASource, ADest: String;
 ARenameCheck: boolean = true): boolean;
var
  sh: TSHFileOpStruct;
begin
  sh.Wnd := Application.Handle;
  sh.wFunc := FO_COPY;

  // String muss mit #0#0 Terminiert werden, um das Listenende zu setzen
  sh.pFrom := PChar(ASource + #0);
  sh.pTo := PChar(ADest + #0);
  sh.fFlags := FOF_SILENT or fof_MultiDestFiles;
  if ARenameCheck then
    sh.fFlags := sh.fFlags or fof_RenameOnCollision;
  Result:=ShFileOperation(sh)=0;
end;
Aufruf erfolgt dann logischerweise über :
Delphi-Quellcode:
CopyFileEx(pchar('\\'+serverip+'\protax\dbase\*_servclient.*'),GetApplicationDirectory+'dbase\');
So 1. Die Quelle befindet sich immer auf einem anderen Rechner im Netzwerk
2. Kopiere alle Dateien die in Ihrem Namen ein _servclient zu stehen haben aber alle datentypen werden kopiert. +
(Dafür das * nach dem . )

Alles funktioniert einbandfrei ---- NUR NICHT DANN wenn die Quelle im Zugriff ist.

Mit CopFile währe das egal aber da kann ich ja keine Ordner kopieren.

Bitte um eure Hilfe und Danke im vorraus.

thomasw 31. Jan 2006 00:50

Re: Kopieren von Dateien während zugriff ..???
 
Das laesst sich nur dadurch lesen, dass du die Dateien auf jenen Rechnern so oeffnest, dass auch lesezugriff weiterhin gestattet ist. Ansonsten seh ich da keine andere Moeglichkeit.

Christian Seehase 31. Jan 2006 11:04

Re: Kopieren von Dateien während zugriff ..???
 
Moin ozi,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Ich möchte aber mal bezweifeln, dass es mit CopyFile geht, wenn SHFileOperation fehlschlägt.
Entweder die Datei wurde exklusiv geöffnet, so dass kein anderer Prozess sie lesen kann, oder nicht.

Prüf' dass doch noch einmal.

himitsu 31. Jan 2006 12:15

Re: Kopieren von Dateien während zugriff ..???
 
Das der/die andere Prozess die Datei zum lesen freigebegen haben muß (SharedRead), wurde ja schon gesagt, aber man muß ja auch selber die freigaben entsprechend gesetzt haben, also Nurlesezugriff und natürlich muß auch noch der Zugriff für den anderen Prozess gestattet sein (SharedReadWrite).

Die Prozesse dürfen sich halt nicht gegenseitig blokieren, sonst geht's nicht :)

Xcessive_ 31. Jan 2006 12:19

Re: Kopieren von Dateien während zugriff ..???
 
Probiers mal hiermit:

Delphi-Quellcode:
var
  Mem: TMemoryStream;
  FilePathA, FilePathB: string;
begin
  FilePathA := Edit1.Text; // Pfad der zu kopierenden Datei
  FilePathB := Edit2.Text; // Zielpfad
  Mem := TMemoryStream.Create;

  try
    Mem.LoadFromFile(FilePathA);
    Mem.SaveToFile(FilePathB);
  finally
    Mem.Free;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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 by Thomas Breitkreuz