![]() |
Bei einem Komandozeilenprogramm in der gleichen Spalte...
Ich schreibe gerade ein kleines Komandozeilenprogramm das Dateien verschlüsselt. Nun möchte ich eine Prozentanzeige mit dem Fortschritt programmieren. Soll ungefähr so aussehen:
Delphi-Quellcode:
In bearbeitung... 0%
Delphi-Quellcode:
In bearbeitung... 1%
Delphi-Quellcode:
u.s.w.
In bearbeitung... 2%
Allerdings alles in einer Zeile. |
Re: Bei einem Komandozeilenprogramm in der gleichen Spalte..
Probiere es mal so:
Delphi-Quellcode:
Grüße vom marabu
Write(con, #13, 'In Bearbeitung ... ', iProzent);
|
Re: Bei einem Komandozeilenprogramm in der gleichen Spalte..
Delphi-Quellcode:
gotoxy(1, WhereY-1);
writeln ('Bearbeitet: ', Prozentsatz:3, '%'); |
Re: Bei einem Komandozeilenprogramm in der gleichen Spalte..
Zitat:
Zitat:
Kleine Frage noch, für was steht das "con, #13"??? IMHO steht das con für Tastatur und das #13 für die Entertaste. :wiejetzt: |
Re: Bei einem Komandozeilenprogramm in der gleichen Spalte..
Hi, eine Lösung gibt es nur noch auf Umwegen...
Delphi-Quellcode:
Siehe auch URL:
program Test;
{$APPTYPE CONSOLE} uses Windows, SysUtils; var ConHandle : THandle; // Handle to console window Coord : TCoord; // To store/set screen position MaxX, MaxY : Word; // To store max window size NOAW : LongInt; //----------------------------------------- // Get handle to console output //----------------------------------------- function GetConOutputHandle : THandle; begin Result := GetStdHandle(STD_OUTPUT_HANDLE) end; //----------------------------------------- // Position cursor to X, Y //----------------------------------------- procedure GotoXY(X, Y : Word); begin Coord.X := X; Coord.Y := Y; SetConsoleCursorPosition(ConHandle, Coord); end; { procedure Cls; begin Coord.X := 0; Coord.Y := 0; FillConsoleOutputCharacter(ConHandle, ' ', MaxX * MaxY, Coord, NOAW); GotoXY(0, 0); end } procedure Init; begin // Get console output handle ConHandle := GetConOutputHandle; // Get max window size Coord := GetLargestConsoleWindowSize(ConHandle); MaxX := Coord.X; MaxY := Coord.Y; end; var i: byte; begin // Initialize global variables Init; //Cls; Coord.X := 0; Coord.Y := 0; // Console Code Page API is not supported under Win95 - only GetConsoleCP Writeln('Console Code Page = ', GetConsoleCP); Writeln('Max X=', MaxX,' Max Y=', MaxY); Writeln('----------------------------------------------------'); writeln; write('Teste... '); for i:=1 to 100 do begin gotoxy(12,4); write(i, ' %'); sleep(100); end; writeln; writeln('press ENTER to close Prg.') Readln; end. ![]() MfG. |
Re: Bei einem Komandozeilenprogramm in der gleichen Spalte..
Hallo Mario,
CON ist der reservierte Name für den Console-I/O-Channel. #13 ist das ASCII control character CR (carriage return) und setzt den Cursor an den Anfang der Ausgabezeile zurück. Damit du mit CON arbeiten kannst, musst du dir einen file dafür besorgen:
Delphi-Quellcode:
marabu
var
con: TextFile; begin Assign(con, 'con'); Rewrite(con); Write(con, #13, 'In Bearbeitung... ', iProzent, '%'); CloseFile(con); end. |
Re: Bei einem Komandozeilenprogramm in der gleichen Spalte..
Hey, Tolle Lösung..
MfG. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz