Das Ganze geht auch ohne zusätzliche, eingebundene Funktionen.
- edit -
Die Konsole besteht aus 80x25 Zeichen unter Windows.
Man kann also mit einer Breite von 80 rechnen.
kurzes Bsp. (QnD!):
Delphi-Quellcode:
program ProgressApp;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
SlashArray: array[0..3] of Char = ('-', '\', '|', '/');
var
i: Integer;
sOut: String;
begin
Writeln('********************************************************************************');
for i := 0 to 100 do
begin
// durch das #13 wird bei jedem Schreiben erst an die erste Stelle der Zeile gesprungen und
// dann die komplette Zeile neugeschrieben
sOut := Format(#13 + '%s [%%.%ds%%.%ds] %d%%%%', [SlashArray[i mod 4], i div 2, 50 - (i div 2), i]);
sOut := Format(
sOut,
['********************************************************************************',
' ']
);
Write(sOut);
Sleep(50);
end;
Write(Format(#13 + '%80s', [' ']));
Write(Format(#13 + 'Complete! (%s)', ['filename.ext']));
Writeln(#13#10#13#10);
Writeln('********************************************************************************');
Readln;
end.