Prob mit Funktion system("cls")



  • HI Leutz !

    Wollte mal diese Funktion zum löschen des Bildschirm ausprobieren ....
    Hab aber ein kleines Prob mit dieser Angelegenheit.
    Kann es sein das die #define anweisung in der clear.h
    irgendwo anders hinkommen muss ?

    hier meine Header:

    //clear.h
    
    #ifndef _clear_
     /* Standard error macro for reporting API errors */ 
    #define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s \ 
        on line %d\n", __FILE__, GetLastError(), api, __LINE__);}
    
     void cls( HANDLE hConsole )
     {
        COORD coordScreen = { 0, 0 };    /* here's where we'll home the
                                            cursor */ 
        BOOL bSuccess;
        DWORD cCharsWritten;
        CONSOLE_SCREEN_BUFFER_INFO csbi; /* to get buffer info */ 
        DWORD dwConSize;                 /* number of character cells in
                                            the current buffer */ 
    
        /* get the number of character cells in the current buffer */ 
    
        bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );
        PERR( bSuccess, "GetConsoleScreenBufferInfo" );
        dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
    
        /* fill the entire screen with blanks */ 
    
        bSuccess = FillConsoleOutputCharacter( hConsole, (TCHAR) ' ',
           dwConSize, coordScreen, &cCharsWritten );
        PERR( bSuccess, "FillConsoleOutputCharacter" );
    
        /* get the current text attribute */ 
    
        bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );
        PERR( bSuccess, "ConsoleScreenBufferInfo" );
    
        /* now set the buffer's attributes accordingly */ 
    
        bSuccess = FillConsoleOutputAttribute( hConsole, csbi.wAttributes,
           dwConSize, coordScreen, &cCharsWritten );
        PERR( bSuccess, "FillConsoleOutputAttribute" );
    
        /* put the cursor at (0, 0) */ 
    
        bSuccess = SetConsoleCursorPosition( hConsole, coordScreen );
        PERR( bSuccess, "SetConsoleCursorPosition" );
        return;
     }
    
    #endif
    

    .cpp Datei:

    #include <iostream>
    #include <stdlib.h>
    #include "clear.h"
    
    using namespace std;
    
    int main(){
    
        system("cls");
    
    return 0;
    
    }
    

    Hier die Fehlermeldung des Compilers (VC++)
    **
    --------------------Configuration: clear screen - Win32 Debug--------------------
    Compiling...
    main.cpp
    i:\programme\microsoft visual studio\myprojects\clear screen\clear.h(6) : error C2001: newline in constant
    i:\programme\microsoft visual studio\myprojects\clear screen\clear.h(7) : error C2146: syntax error : missing ';' before identifier 'line'
    i:\programme\microsoft visual studio\myprojects\clear screen\clear.h(7) : error C2501: 'on' : missing storage-class or type specifiers
    i:\programme\microsoft visual studio\myprojects\clear screen\clear.h(7) : fatal error C1004: unexpected end of file found
    Error executing cl.exe.

    main.obj - 4 error(s), 0 warning(s)
    **

    THX für alle antworten!



  • Hi

    Kann mir denn keiner helfen .... ?
    Mit einem Tip oder Hinweis würde ich mich schon zu frieden geben 😉

    ciao



  • Na wieso bindest du nicht einfach die <windows.h> ein?? Die <stdlib.h> und die "clear.h" kannst du dir sparen!!



  • system("cls") ist schlecht und sollte nicht benützt werden. Benütz die in der Headerdatei clear.h geschriebene cls-Funktion.

    Zu den Fehlern:

    - Mach das '\' am Ende vom Makro PERR raus und bring das ganze Makro in eine Zeile.

    - Includiere die <windows.h>

    Im Hauptprogramm dann statt system("cls") einfach clear(GetStdHandle(STD_OUTPUT_HANDLE))

    MfG SideWinder



  • oh man ... da hab ich ja was vertüddelt .... 😕
    jo vielen dank an euch !

    mfg


Anmelden zum Antworten