Results 1 to 7 of 7

Thread: file copy

  1. #1

    file copy

    Hoe kan ik met Delphi bestanden kopieren.
    Heeft iemand een complete procedure met check of een bestand bestaat enz. ?

  2. #2
    Hallo

    Met deze zou je normaal gezien een bestand kunnen kopieren :

    p := save.memo4.Lines.GetText; //locatie waar bestand zich bevind
    q := save.memo5.Lines.GetText; //locatie naar waar het bestand moet worden gekopieerd
    copyfile( p,q,false); //kopieer en overschrijf indien het bestand al bestaat

    let wel op : p en q zijn Pchar!

    Voor de andere vraag: zoek eens in de help onder "FileExists"

    Enjoy,

    Geert

  3. #3

    Thumbs up file copy progress

    Hoi,

    Mocht je ook ge-interesseerd zijn in de voortgang van het kopieerprocess dan zou je deze kopieeropdracht kunnen oplossen met TFileStream.

    Probeer onderstaande code maar eens:

    Code:
    procedure ProgressFileCopy;
    const
      MAX_READ_BUFFER = 4096; //leest blokken in van 4 kilobytes
    //zodat je de voortgang kan volgen van het
    //het aantal geschreven bytes
    var
      aSourcestream: TFileStream;
      aDestStream: TFileStream;
      bytesWritten: Int64; //64bits integer...zodat ook van zeer grote
    //bestanden de voortgang kan worden geteld
      data: array [0..(MAX_READ_BUFFER-1)] of Byte;
      aSourceFileName,
      aDestinationFileName: string;
    begin
      aSourceFileName := 'C:\MyFile.ext';
      aDestinationFileName := 'C:\Copy of Myfile.ext';
    
      bytesWritten := 0;
    
      aSourceStream := TFileStream.Create(aSourceFileName, fmOpenRead);
      aDestStream := TFileStream.Create(aDestinationFileName, fmCreate);
    
      while bytesWritten < aSourceStream.Size do
    begin
    //eerst kijken of we minder moeten lezen
    if (bytesWritten + MAX_READ_BUFFER) > aSourceStream.Size then
    begin
    //we moeten minder dan MAX_READ_BUFFER lezen
          aSourceStream.Read(data, aSourceStream.Size - bytesWritten);
          aDestStream.Write(data, aSourceStream.Size - bytesWritten);
    
          //ophogen van het aantal geschreven bytes
          inc(bytesWritten, aSourceStream.size - bytesWritten);
        end
    else
    begin
    //we kunnen de MAX_READ_BUFFER lezen
          aSourceStream.Read(data, MAX_READ_BUFFER);
          aDestStream.Write(data, MAX_READ_BUFFER);
    
          //ophogen van het aantal geschreven bytes
          inc(bytesWritten, MAX_READ_BUFFER);
        end;
    
        //uit bytesWritten kan je nu het aantal geschreven bytes lezen
    //dus weet je de voortgang
    end;
    
      aSourceStream.Free;
      aDestStream.free;
    end;
    Voordat je gaat kopieren moet je eerst bepalen of het bronbestand wel bestaat dit kan met de 'FileExists' functie. En wanneer je doelbestand bestaat moet je bepalen of je deze wel of niet wil overschrijven.


    -Emil
    Last edited by walterheck; 22-May-03 at 21:41.

  4. #4
    Code:
    procedure filecopy( const van, naar : string);
    var
      s,t : tfilestream;
    begin
      s := tfilestream.create(van, fmopenread);
      try
        t := tfilestream.create(naar, fmopenwrite or fmcreate);
        try
          t.copyfrom(s,s.size);
        finally
          t.free;
        end;
      finally
        s.free;
      end;
    end;
    Last edited by walterheck; 22-May-03 at 21:42.
    west of eden

  5. #5
    Een hele mooie fileCopy met "Append" mogelijkheid :

    Code:
    function AppendFileCopy(ExistingFileName: String;
                            NewFileName     : String): Boolean;
    var
      SourceFileStream     : TFileStream;
      DestinationFileStream: TFileStream;
    begin
      try
        // Open sourcefile
        SourceFileStream := TFileStream.Create(ExistingFileName, fmOpenRead or fmShareDenyWrite);
    
        try
          DestinationFileStream := nil;
    
          try
            if FileExists(NewFileName) then
            begin
              // Open file to append
              DestinationFileStream := TFileStream.Create(NewFileName,
                                                          fmOpenReadWrite or fmShareExclusive);
              DestinationFileStream.Seek(0, soFromEnd);
            end
            else
            begin
              // Create new file to append
              DestinationFileStream := TFileStream.Create(NewFileName, fmCreate);
            end;
    
            // Append from sourcefile
            DestinationFileStream.Copyfrom(SourceFileStream, SourceFileStream.Size);
    
          finally
            DestinationFileStream.free;
          end;
    
        finally
          SourceFileStream.free;
        end;
    
        Result := True;
    
      except
        Result := False;
      end;
    end;
    *Er bestaat geen bugs, alleen leerpunten*

  6. #6
    Senior Member walterheck's Avatar
    Join Date
    Oct 2001
    Location
    Belo Horizonte, Brasil
    Posts
    4,212
    Code van alle berichten geconverteerd met een code converter...
    Nee, de Romeinen spraken geen ISO-8859-1 LATIN

  7. #7
    TCustomVader JosAikema's Avatar
    Join Date
    May 2002
    Location
    Harderwijk
    Posts
    1,491

    Re: file copy

    Originally posted by Jenem
    Heeft iemand een complete procedure met check of een bestand bestaat enz. ?
    Wat is er mis met FileExists?
    Vanaf 1 oktober 2004 geen Delphi programmeur meer

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Copy File
    By Delphi Man in forum Algemeen
    Replies: 9
    Last Post: 20-Oct-03, 15:00
  2. Copy file
    By Genius in forum Algemeen
    Replies: 16
    Last Post: 18-Sep-03, 17:30
  3. Cd-brand programma nodig
    By RedPanda in forum Koffiehoek
    Replies: 6
    Last Post: 13-Apr-03, 14:13
  4. Onlogische duplicate resource error
    By TjeerdB in forum Algemeen
    Replies: 11
    Last Post: 27-Jan-03, 15:34
  5. Delete & Copy File werkt niet >???<
    By TwoWalker in forum Algemeen
    Replies: 4
    Last Post: 30-Jun-02, 01:05

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •