Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konsolenanwendung: Änderung vorhandener Zeichen (https://www.delphipraxis.net/57859-konsolenanwendung-aenderung-vorhandener-zeichen.html)

Totti 27. Nov 2005 18:37


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? :)

BenjaminH 27. Nov 2005 18:52

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

marabu 27. Nov 2005 18:54

Re: Konsolenanwendung: Änderung vorhandener Zeichen
 
Moin Malte,

den Effekt erhältst du durch die Verwendung des ASCII Steuerzeichens CR (#13):

Delphi-Quellcode:
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;
Grüße vom marabu

Totti 27. Nov 2005 19:07

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?

marabu 27. Nov 2005 19:16

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

turboPASCAL 27. Nov 2005 22:36

Re: Konsolenanwendung: Änderung vorhandener Zeichen
 
Delphi-Quellcode:
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.
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz