![]() |
Konsolenanwendung: Änderung vorhandener Zeichen
Moin,
hab mit der Suche nichts gefunden, mir vielen allerdings auch wenige gescheite Suchwörteer ein :D Wenn ich eine Konsolenanwednung schreibe, kann ich ja mit Writeln eine Zeile+Zeichen an den bereits vorhanden Text ANFÜGEN. Mit Write geht das sogar, ohne dass ne neue Zeile gestartet wird. ich habe aber schon etliche Programme gesehen, die etwa Prozentangaben ausgeben - an der selben Stelle. Wo eben also noch 95% stand, steht jetzt 96%. Wie macht man das? :) |
Re: Konsolenanwendung: Änderung vorhandener Zeichen
In TurboPascal gabs dafür GotoXY(,Y:Integer), obs das in Delphi noch gibt weiß ich nicht, ich geh aber davon aus, dass.
Viele Grüße Benjamin |
Re: Konsolenanwendung: Änderung vorhandener Zeichen
Moin Malte,
den Effekt erhältst du durch die Verwendung des ASCII Steuerzeichens CR (#13):
Delphi-Quellcode:
Grüße vom marabu
var
con: TextFile; begin AssignFile(con, 'con:'); Rewrite(con) for i := 1 to 50 do begin // ... Write(con, Format(#13'%.1n %% ', [2.0 * i])); end; end; |
Re: Konsolenanwendung: Änderung vorhandener Zeichen
wow, bin beeindruckt - schaut geil aus, auch wenn ich momentan NULL begriffen hab. Aber da es das ist, was ich meinte,
werd ich mich jetzt mal dranhängen. Ne Frage vorweg: geht das auch zeilenzurückübergreifend? |
Re: Konsolenanwendung: Änderung vorhandener Zeichen
Nicht über ASCII Steuerzeichen. Wenn du mehr Kontrolle über den Cursor brauchst, dann musst du mit dem Win32 Console API arbeiten - SetConsolePosition() und seine Freunde.
marabu |
Re: Konsolenanwendung: Änderung vorhandener Zeichen
Delphi-Quellcode:
Damit kann man schon was anfangen. Wenn du aber noch mehr Functionen brauchst, schau dich mal nach der Unit Crt32.pas hier in der DP um. Sie ist ein Ersatz für die Crt-Unit aus Turbo Pascal.
procedure GotoXY(X, Y: Byte);
var Coord: TCoord; ConsoleScreenRect: TSmallRect; CBI: TConsoleScreenBufferInfo; begin GetConsoleScreenBufferInfo(hConsoleOutput, CBI); ConsoleScreenRect := CBI.srWindow; Coord.X := X - 1 + ConsoleScreenRect.Left; Coord.Y := Y - 1 + ConsoleScreenRect.Top; SetConsoleCursorPosition(hConsoleOutput, Coord); end; var hConsoleOutput: THandle; BEGIN hConsoleOutput := GetStdHandle(STD_OUTPUT_HANDLE); ... ... END. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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