Avatar billede Slettet bruger
11. februar 2006 - 17:22 Der er 26 kommentarer og
1 løsning

Slette alt tekst

Hej eksperter!
Hvordan sletter jeg alt tekst fra skærmen?
Eks.:

<INCLUDES>

using namespace std;

int main()
{
    cout << "Hej verden!";
    cout << "\nTryg <ENTER> for at slette alt tekst fra skærmen.";
    cin.get();
    cout << "Øv! Det virker ikke :(";
    // Her skal alt tekst så slettes
    cin.get();
}
Avatar billede arne_v Ekspert
11. februar 2006 - 17:53 #1
platform specifikt

men proev:

system("CLS");
Avatar billede bertelbrander Novice
11. februar 2006 - 19:43 #2
En anden metode:

#include <iostream>
#include <windows.h>

using namespace std;

void GotoXY(int x, int y)
{
  COORD c;
  c.X = (short )x;
  c.Y = (short )y;
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

void ClearScreen()
{
  short i;
  CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;
  HANDLE StdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(StdOut, &ConsoleScreenBufferInfo);
  SMALL_RECT Pos = ConsoleScreenBufferInfo.srWindow;
  DWORD D;
  for(i = Pos.Top; i <= Pos.Bottom; i++)
  {
      COORD C;
      C.X = Pos.Left;
      C.Y = i;
      FillConsoleOutputCharacter(StdOut, ' ', Pos.Right - Pos.Left, C, &D);
      FillConsoleOutputAttribute(StdOut, 0, Pos.Right - Pos.Left, C, &D);
  }
  GotoXY(0, 0);
}

int main()
{
    cout << "Hej verden!";
    cout << "\nTryg <ENTER> for at slette alt tekst fra skærmen.";
    cin.get();
    cout << "Øv! Det virker ikke :(";
    ClearScreen();
    cin.get();
}
Avatar billede Slettet bruger
12. februar 2006 - 21:07 #3
Hvis det kun skal køre på Windows og Linux; kan jeg så bruge:


#include <windows.h>

system("CLS");


?
Avatar billede bertelbrander Novice
12. februar 2006 - 22:48 #4
På Linux kan du ikke bruge windows.h
CLS hedder clear på linux.
Og du skal inkludere stdlib.h for at bruge system.
Avatar billede Slettet bruger
12. februar 2006 - 23:03 #5
Okaj...

Så på windows:

#include <stdlib.h>
system("CLS");

Og Linux:
#include <stdlib.h>
system("clear");

?
Avatar billede bertelbrander Novice
12. februar 2006 - 23:11 #6
Ja.
Avatar billede arne_v Ekspert
13. februar 2006 - 01:16 #7
paa Linux ville jeg nok bruge:

printf("\x1B[2J");
Avatar billede Slettet bruger
13. februar 2006 - 11:55 #8
Hvad er forskellen på system("clear") og printf("\x1B[2J")?
Er printf("\x1B[2J") c mens system("clear") er c++?
Avatar billede arne_v Ekspert
13. februar 2006 - 13:08 #9
det ene bruger et eksternt program

det andet sender bare noget til en VT kompatibel terminal

ja det er C men du kan jo altid

cout << "\x1B[2J";
Avatar billede Slettet bruger
13. februar 2006 - 14:38 #10
Åååh...
Hvad vi vil du anbefale?

cout << "\c1B[2J";

eller

system"CLS");

?
Avatar billede Slettet bruger
13. februar 2006 - 14:39 #11
* system("CLS");
Avatar billede arne_v Ekspert
13. februar 2006 - 14:55 #12
jeg ville bruge escape sekvensen
Avatar billede Slettet bruger
13. februar 2006 - 15:30 #13
Hvad mener du med "escape sekvensen"?
Avatar billede arne_v Ekspert
13. februar 2006 - 16:11 #14
\x1B hedder ogsaa escape

derfor kaldes den form for sekvens for en escape sekvens
Avatar billede Slettet bruger
13. februar 2006 - 21:27 #15
Tør man spørge HVORFOR???
Avatar billede Slettet bruger
13. februar 2006 - 21:28 #16
(Med hvorfor mener jeg, hvorfor escape frem for system("CLS")?)
Avatar billede arne_v Ekspert
13. februar 2006 - 21:57 #17
meget mindre ressource kraevende
Avatar billede Slettet bruger
14. februar 2006 - 16:54 #18
Den kræver altså mindre af computeren?
Kan escape-futtelihutten også bruges på Linux OS?
(Bare smid et svar!)
Avatar billede arne_v Ekspert
14. februar 2006 - 18:09 #19
ja

den kan kun bruges paa Linux, Unix og andre styre systemer medmindre
du i DOS/Windows loader ANSI.SYS
Avatar billede Slettet bruger
14. februar 2006 - 18:16 #20
Så:

<blablabla includes>
#include <ANSI.SYS>

int main()
{
    cout << "Det virker ikke!";
    cout << "\c1B[2J";
    cout << "DET VIRKER!";
    cin.get();
}

PS: Bare smid et svar!
Avatar billede Slettet bruger
14. februar 2006 - 18:17 #21
- Det virker på Linux, Unix, DOS og Windows?
Avatar billede arne_v Ekspert
14. februar 2006 - 18:39 #22
cout << "\x1B[2J";

ikke

cout << "\c1B[2J";
Avatar billede arne_v Ekspert
14. februar 2006 - 18:44 #23
Linux, Unix

med installation af speciel ANSI driver Windows og DOS
Avatar billede arne_v Ekspert
14. februar 2006 - 18:49 #24
og svar
Avatar billede Slettet bruger
14. februar 2006 - 19:03 #25
Så det er noget, brugeren skal installere?
Avatar billede arne_v Ekspert
14. februar 2006 - 19:17 #26
ja - og det kan de fleste windows bruger eikek finde ud af

brug system("CLS") paa windows
Avatar billede Slettet bruger
15. februar 2006 - 08:47 #27
Okaj!
Et lille resume til mig selv og andre nysgerrige nybegyndere:

---

Windows:
    #include <stdlib.h>
    system("CLS");

Andre (C++):
    cout << "\x1B[2J";

Eller (C):
    printf("\x1B[2J");

---

Tak for hjælpen!

--- LUKKET ---
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester