Hoe kan ik met Delphi bestanden kopieren.
Heeft iemand een complete procedure met check of een bestand bestaat enz. ?
Hoe kan ik met Delphi bestanden kopieren.
Heeft iemand een complete procedure met check of een bestand bestaat enz. ?
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
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:
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.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;
-Emil
Last edited by walterheck; 22-May-03 at 21:41.
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
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*
Code van alle berichten geconverteerd met een code converter...
Nee, de Romeinen spraken geen ISO-8859-1 LATIN
Wat is er mis met FileExists?Originally posted by Jenem
Heeft iemand een complete procedure met check of een bestand bestaat enz. ?
Vanaf 1 oktober 2004 geen Delphi programmeur meer
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks