ik heb voor de grap een console applicatie geschreven in delphi puur om te oefenen
die zowel een bar laat zien als een percentage.
er zit geen recursie in , dus je moet alle bestanden zelf aangeven
maar mischien vind je het wel handig.
de code maakt gebruik van crt_efd die je nog moet downloaden.
de code is als volgt
als je alleen de exe wilt moet je maar ff je mail adres achterlaten
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, windows, crt_efd;
var
pox, poy : integer ;
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..8192] of Char;
buffdone : integer ;
teller : integer ;
begin
// get current coordinates
pox := wherex ;
poy := wherey ;
buffdone := 0 ;
teller := 0 ;
if length(paramstr(1)) < 1 then
begin
writeln('De syntax is ' + extractfilename(paramstr(0))+ ' [BRON BESTAND] [DOELBESTAND] ');
exit ;
end;
if length(paramstr(2)) < 1 then
begin
writeln('De syntax is ' + extractfilename(paramstr(0))+ ' [BRON BESTAND] [DOELBESTAND] ');
exit ;
end;
if not FileExists(paramstr(1)) then
begin
writeln('Bron bestand bestaat niet');
exit ;
end;
assignFile(FromF, paramstr(1) );
Reset(FromF,1 );
AssignFile(ToF, paramstr(2)); { Open output file }
Rewrite(ToF, 1) ;
WriteXY(extractfilename(paramstr(1)) + ' [ ] van ' + IntToStr(FileSize(FromF)div 1024) + ' KB',pox,poy,7 ) ;
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
buffdone := sizeof(buf) + buffdone ;
teller := (buffdone div (FileSize(FromF) div 10 )) ;
WriteXY(extractfilename(paramstr(1)) + ' [' + stringofchar(#219,teller) + stringofchar(' ',10 - teller)+ '] (' + inttostr((buffdone div (FileSize(FromF) div 100 ))) + '%) van ' + IntToStr(FileSize(FromF)div 1024) + ' KB',pox,poy, 7 ) ;
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF); |