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 date ikopieren mit fortsetzen funktion (https://www.delphipraxis.net/76775-date-ikopieren-mit-fortsetzen-funktion.html)

Van HelF 9. Sep 2006 15:24


date ikopieren mit fortsetzen funktion
 
Hallo,

ich möchte ein programm schreiben, mit dem man dateien, kopieren kann (z.b. zu einem anderen pc im netzwerk), jedoch sollte die übertragung pausierbar sein, und die datei dann an der letzten stelle weiter fortgesetzt werden können.
kann mir jemand einen rat geben, wie ich dies verwirklichen kann?
ich habe mich schon mit streams beschäftigt, nur ohne wirklichen erfolg.

MFG
Van HelF

Christian Seehase 9. Sep 2006 15:41

Re: date ikopieren mit fortsetzen funktion
 
Moin Van HelF,

wenn Du die Daten per TFileStream überträgst, müsstest Du eigentlich jeweils nur nachschauen, wie gross die Zieldatei ist, und vor dem, fortgesetzten, Lesen der Quelldatei die TFileStream.Position auf diesen Wert setzen.
Solange sie nicht komplett ist, bekommt die Zieldatei einen temporären Namen, oder eine entsprechende Endung, und wird am Schluss auf eingentlichen Namen umbenannt.

Van HelF 9. Sep 2006 16:05

Re: date ikopieren mit fortsetzen funktion
 
hab ich versucht, nur leider wird die datei immer wieder erstetz und neu von vorne geschreiben.

Delphi-Quellcode:
procedure kopieren;
var Quelle, Ziel, Zielgr:Tfilestream;
    gr:int64;
begin
  Quelle:=Tfilestream.Create('D:\test.exe',fmOpenRead or fmShareDenyNone);
  Zielgr:=Tfilestream.Create('D:\test2.exe',fmOpenRead or fmShareDenyNone);
  gr:=zielgr.Size;
  zielgr.Free;
  Ziel:=Tfilestream.Create('D:\test2.exe',fmCreate or fmShareDenyWrite);
  quelle.position:=gr;
  try
    Ziel.CopyFrom(Quelle, 0);
  finally
    Ziel.free;
  end;
   Quelle.free;
end;

SirThornberry 9. Sep 2006 16:18

Re: date ikopieren mit fortsetzen funktion
 
die datei wird ersetzt weil du sie mit fmCreate öffnest. fmCreate sorft dafür das die Datei angelegt wird wenn sie nicht existiert und beim öffnen geleert wird. nutze fmOpenWrite bzw. fmOpenReadWrite


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 Uhr.

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