Registriert seit: 28. Aug 2003
Ort: Betzdorf
63 Beiträge
Delphi 4 Standard
|
Re: CopyFile und Progressbar?
2. Dez 2003, 19:49
Hallo ich nutze für diesen Zweck folgende Procedure.
Delphi-Quellcode:
procedure CopyProgress(Source, Destination: string;Progressbar1:Tprogressbar);
var
FromF, ToF: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;
var Frei,Gesamt,Benuzt:int64;
begin
Screen.Cursor:=crHourglass;
AssignFile(FromF, Source);
reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
GetFreeDiskSpace(Extractfiledrive(Destination), Frei,Gesamt,Benuzt);
if Filelength > Frei then
begin
MessageDlg('Nicht genügend freier Speicherplatz auf Laufwerk [ '+Extractfiledrive(Destination)+'\ ]' , mtError,[mbOk], 0);
CloseFile(FromF);
CloseFile(ToF);
Screen.Cursor:=crdefault;
Exit;
end;
try
with Progressbar1 do
begin
Application.ProcessMessages;
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
Application.ProcessMessages;
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
Position := Position + NumRead;
end;
Application.ProcessMessages;
CloseFile(FromF);
CloseFile(ToF);
end;
Except;
MessageDlg('Der Kopiervorgang konnte nicht Ordnungsgemäß ausgeführt werden !', mtError,[mbOk], 0);
end;
progressbar1.Position:=0;
Screen.Cursor:=crdefault;
Vieleicht sollte man hier noch eine Abfrage machen ob die Datei bereits Exisitert oder ob der Freiespeicherplatz des Ziellaufwerks ausreicht oder ob die Zieldatei nicht gerade verwendet wird.
Gruß
Orion300
|
|
Zitat
|