Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wie kann ich eine Konsolenanwendung leeren? (https://www.delphipraxis.net/156516-wie-kann-ich-eine-konsolenanwendung-leeren.html)

YXCVBNM1 4. Dez 2010 22:23

Wie kann ich eine Konsolenanwendung leeren?
 
hallo,

ich bin ein absoluter Anfänger in Delphi und ich will eine Konsolenanwendung programmieren bei der sich die konsole leert wenn eine Bedingung erfüllt ist. Ich habe im Internet bereits lange nach einer Lösung gesucht, aber alle vorgeschlagenen Lösungen haben nicht funktioniert. Warscheinlich habe ich wegen meinem noch geringen wissen einige Programmzeilen vergessen. Da ich aber trotzdem gerne wissen würde wie das geht, habe ich unten mal ein paar extrem primitive programmezeilen eingetippt. Könnte mir die vielleicht jemand so umschreiben, dass sie funktionieren?

uses
SysUtils;

VAR
a:integer;

begin
readln(a);
writeln(a);
If a=0 then //hier sollte dann der Inhalt der Konsole geleert werden
readln;
end;

Danke schonmal im Voraus!

Namenloser 4. Dez 2010 22:32

AW: Wie kann ich eine Konsolenanwendung leeren?
 
Willkommen in der DP :dp:
Such mal bei Google nach der Unit "crt32.pas", diese stellt u.a. die Funktion
Delphi-Quellcode:
ClrScr
bereit, womit sich der Bildschirminhalt löschen lässt. Lade die Unit herunter und lege sie im Lib-Verzeichnis von Delphi oder in deinem Projektverzeichnis ab, und füge dann "crt32" zum uses-Abschnitt in deinem Quellcode hinzu.

hathor 4. Dez 2010 22:34

AW: Wie kann ich eine Konsolenanwendung leeren?
 
cls

Namenloser 4. Dez 2010 22:37

AW: Wie kann ich eine Konsolenanwendung leeren?
 
Zitat:

Zitat von hathor (Beitrag 1066246)
cls

Den Befehl gibt es aber unter Delphi nicht.

YXCVBNM1 4. Dez 2010 22:45

AW: Wie kann ich eine Konsolenanwendung leeren?
 
danke für die schnelle hilfe. Mit der Lösung NamenLozer geht es. Danke :)

vergessen 4. Dez 2010 23:01

AW: Wie kann ich eine Konsolenanwendung leeren?
 
Zitat:

Zitat von NamenLozer (Beitrag 1066245)
Willkommen in der DP :dp:
Such mal bei Google nach der Unit "crt32.pas", diese stellt u.a. die Funktion
Delphi-Quellcode:
ClrScr
bereit, womit sich der Bildschirminhalt löschen lässt. Lade die Unit herunter und lege sie im Lib-Verzeichnis von Delphi oder in deinem Projektverzeichnis ab, und füge dann "crt32" zum uses-Abschnitt in deinem Quellcode hinzu.

Das Problem ist ja schon gelöst, aber mit write (statt writeln) und readln sieht's noch ein wenig hübscher in der Konsole aus:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  crt32,
  SysUtils;

var
  i, a: integer;

begin
  repeat
    Write('Ihre Eingabe: ');
    Readln(a);
  until a = 0;
  //for i := 0 to 500 do Writeln('');
  //500 Leerzeilen sollten für ein cls ohne crt32 reichen ;-)
  ClrScr;
  Write('Und wie jetzt weiter? ');
  Readln;
end.

hathor 4. Dez 2010 23:35

AW: Wie kann ich eine Konsolenanwendung leeren?
 
Ohne zusätzliche Units geht es so:

Delphi-Quellcode:
procedure ClrScr;
var tc :tcoord;
  nw : DWORD;
  cbi : TConsoleScreenBufferInfo;
  HConsoleOutput:thandle;
  TextAttr : Word;
begin
  TextAttr := cbi.wAttributes;
  HConsoleOutput := GetStdHandle(STD_OUTPUT_HANDLE);
  getConsoleScreenBufferInfo(HConsoleOutput,cbi);
  tc.x := 0;
  tc.y := 0;
  FillConsoleOutputAttribute(HConsoleOutput,textattr,cbi.dwsize.x*cbi.dwsize.y,tc,nw);
  FillConsoleOutputCharacter(HConsoleOutput,#32,cbi.dwsize.x*cbi.dwsize.y,tc,nw);
  setConsoleCursorPosition(hconsoleoutput,tc);
end;

Bummi 4. Dez 2010 23:38

AW: Wie kann ich eine Konsolenanwendung leeren?
 
@hathor
das wäre dann 1:1 der Auszug der Prozedur :
Delphi-Quellcode:
unit crt32;
{# freeware}
{# version 1.0.0127}
{# Date 18.01.1997}
{# Author Frank Zimmer}
{# description
 Copyright © 1997, Frank Zimmer, 100703.1602@compuserve.com
 Version: 1.0.0119
 Date:   18.01.1997
............snipp.........

hathor 4. Dez 2010 23:43

AW: Wie kann ich eine Konsolenanwendung leeren?
 
Zitat:

Zitat von Bummi (Beitrag 1066255)
@hathor
das wäre dann 1:1 der Auszug der Prozedur :
Delphi-Quellcode:
unit crt32;
{# freeware}
{# version 1.0.0127}
{# Date 18.01.1997}
{# Author Frank Zimmer}
{# description
 Copyright © 1997, Frank Zimmer, 100703.1602@compuserve.com
 Version: 1.0.0119
 Date:   18.01.1997
............snipp.........

Falsch - vergleiche mal genau!

Delphi-Quellcode:
procedure ClrScr;
var tc :tcoord;
  nw : DWORD;
  cbi : TConsoleScreenBufferInfo;
  HConsoleOutput:thandle; // eingefügt
  TextAttr : Word; // eingefügt
begin
  TextAttr := cbi.wAttributes; // eingefügt
  HConsoleOutput := GetStdHandle(STD_OUTPUT_HANDLE); // eingefügt
  getConsoleScreenBufferInfo(HConsoleOutput,cbi);
  tc.x := 0;
  tc.y := 0;
  FillConsoleOutputAttribute(HConsoleOutput,textattr,cbi.dwsize.x*cbi.dwsize.y,tc,nw);
  FillConsoleOutputCharacter(HConsoleOutput,#32,cbi.dwsize.x*cbi.dwsize.y,tc,nw);
  setConsoleCursorPosition(hconsoleoutput,tc);
end;

Bummi 4. Dez 2010 23:48

AW: Wie kann ich eine Konsolenanwendung leeren?
 
@hathor
me culpa, mea maxima culpa :pale:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.
Seite 1 von 2  1 2      

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