conio.h & gotoxy(); funktioniert nicht :/



  • Hallo liebe Programmierer und Programmiererinnen 🙂 ,
    ich habe ein, fuer euch wahrscheinlich sehr simples, aber fuer mich doch unauffindbares Problem in meinem C-Code.
    Ich benutze Embacodero RAD Studio 2010 auf einem W7 64-Bit System. 😃
    der Code :

    #include "funktionen.h"
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    void ausgabe_vorrunde(int anzahl, ds*zeiger)		//Funktion zur Ausgabe der Vorrundenergebnisse
    {
    	int i, zeile, spalte;
    
    	system("cls");
    	printf("T U R N I E R S T A N D - V O R R U N D E");
    	gotoxy(0,7);
    	printf("Team");
    	gotoxy(3,51);
    	printf("Siege");
    	gotoxy(3,57);
    	printf("Niederlagen");
    	gotoxy(3,68);
    	printf("Pluspunkte");
    	for (i = 0; i < 81; i++)
    	{
    		gotoxy(i,5);
    		printf("%c",196);
    	}
    	fflush(stdin);
    	getch();
    }
    

    Spaeter soll es mal ein Programm zur Dokumentation eines Volleyballturniers werden. Diese Funktion soll eigentlich nur eine Tabelle mit den Teams ausgeben, nur scheitert es bei mir schon, am Erstellen der Tabelle.
    Auf der Konsole erscheint bei mir, wenn ich bei diesem Teil des Programmes angekommen bin:
    **
    T U R N I E R S T A N D _ V O R R U N D ETeamSiegeNiederlagenPluspunkte-

    _______________________________________________________________________________

    **
    Als Fehlercode bekome ich nach dem Schliessen das Programms folgende:
    [BCC32 Warnung] coni.h(183): W8058 Vorcompilierter Header Code im Header kann nicht erzeugt werden 😕

    Die Zeile 183 ist aber die Funktionsdeklaration der getch(); Funktion.
    Ausserdem funktioniert die gotoxy(); Funktion in meiner main.c ohne Probleme. 😮
    Also nochmal zusammengefasst habe ich Folgende probleme:

    • gotoxy;-Funktion funktioniert nicht
    • ich muss bis Montag mit dem Programm fertig sein
    • ungenuegend Programmiererfahrung und Wissen 😃

    Ich bedanke mich einfach schon jetzt fuer eure Hilfe !
    MfG Stufuyi :p



  • Das hat jetzt aber nichts mit Standard-C zu tun.

    Du solltest mal deine Koordinaten Überprüfen.
    Ich glaube nicht das dein Konsolenfenster 81 Zeilen hat.

    Noch was aus der Doku:

    embarcadero schrieb:

    Beschreibung
    Platziert den Cursor im Textfenster.
    gotoxy bewegt den Cursor im aktuellen Textfenster an die angegebene Position. Wenn die angegebenen Koordinaten ungültig sind, wird der Aufruf von gotoxy ignoriert. Ein Beispiel hierfür ist der Aufruf gotoxy(40,30), wenn die untere rechte Fensterecke die Koordinaten (35,25) hat. Kein Argument von gotoxy darf Null (0) sein.

    Und wenn du schon conio.h nimmst, warum nimmst du dann noch system("cls"); ?

    Die Fehlermeldung kommt vom Compiler und nicht von deinem Programm.
    Du soltest mal Build un Run nacheinander ausführen.



  • Hey DirkB,
    wenn es der Fall ist, dass ich den Thread im Falschen Forum eroeffnet habe, tut es mir leid, und ich wuerde darum bitten, dass er verschoben wird 🙂 .

    Du solltest mal deine Koordinaten Überprüfen.
    Ich glaube nicht das dein Konsolenfenster 81 Zeilen hat.

    Ja da hast du wohl recht, ich werde mal ein bisschen mit den Koordinaten spielen, mal sehen ob es dann funktioniert.

    Und wenn du schon conio.h nimmst, warum nimmst du dann noch system("cls"); ?

    Welche Alternative empfiehlst du mir denn zu system("cls"); ? 😕
    Ich bin noch nicht wirklich lange am Programmieren, weswegen ich eben noch nicht so viel kenne 🙂 .

    Und wo wir schon dabei sind, was ich weis und was nicht, was ist Build un Run? 😃



  • Stufuyi schrieb:

    Welche Alternative empfiehlst du mir denn zu szstem(cls); ? 😕 D

    Da kann ich nur sagen RTFM.
    Ich habe nach nicht mal 2 Minuten Internetsuche die Doku zu deinem Compiler und der conio.h gefunden. Da gibt es die Funktion clrscr() .

    Stufuyi schrieb:

    Ich bin noch nicht wirklich lange am Programmieren, weswegen ich eben noch nicht so viel kenne 🙂 .

    Doku zu deinem System lesen. Da gibt es doch sicher auch ein Hilfsystem mit Erklärung und Beispielen. Online habe ich das sogar auf Deutsch gefunden.

    Stufuyi schrieb:

    Und wo wir schon dabei sind, was ich weis und was nicht, was ist Build un Run? 😃

    Du schreibst den Quellcode. Daraus baut der Compiler mit dem Linker ein ausführbares Programm. 😉
    Dann lässt du das Programm laufen. 😉

    Wie machst du das denn jetzt. Wählst du irgendeinen Menüpunkt aus? Wie heisst der denn?



  • Sehr gut danke, dann werde ich mir die auch mal suchen :).

    Wie machst du das denn jetzt. Wählst du irgendeinen Menüpunkt aus? Wie heisst der denn?

    Bei meinem Compiler gibt es den Button Start, in dem er dann einfach die *.exe des Programs ausfuehrt :P.
    Also ich denke, ich muss mich mal noch etwas mit meiner Entwicklungsumgebung beschaeftigen 🙂

    Danke fuer deine Hilfe DrkB!
    MfG Stufuyi



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum C (C89 und C99) in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • TIDK2



  • Versuchs mal mit

    #include <conio>
    

    also ohne .h



  • eek*_* schrieb:

    Versuchs mal mit

    #include <conio>
    

    also ohne .h

    DüffelDoffel! DirkB hat die zwei Fehler bereits benannt: Kein Parameter der Funktion gotoxy darf Null sein, und es darf nicht versucht werden, außerhalb des Fensters zu schreiben.

    Mit folgendem Schnippsel bekommt man die minimalen und maximalen Koordinaten des Fensters heraus:

    text_info ti;
    	gettextinfo(&ti);
    	printf("links (x)   %2d\n", ti.winleft);
    	printf("oben  (y)   %2d\n", ti.wintop);
    	printf("rechts (x)  %2d\n", ti.winright);
    	printf("unten  (y)  %2d\n", ti.winbottom);
    

    Bei mir ergibt das:

    links (x) 1
    oben 👍 1
    rechts (x) 80
    unten 👍 44

    Ein "gotoxy(3,51);" liegt außerhalb des Fensters, weil der y-Wert größer als unten 👍 ist - und wird deshalb ignoriert.

    viele grüße
    ralph


Anmelden zum Antworten