COORD MenueKoord[10][10], was ist das für ein Array???



  • Also alles was ich noch finden konnte war COORD scrn;
    Ich werde einfach mall alles posten und hoffe das das erlaubt ist:
    unten stand noch die funktion für die zeitangabe aber die habe ich weggelassen,
    ist so schon genug code.
    In Menue.h stehen die Masken und folgende header (<stdio.h>, <string.h>, <conio.h>, <stdlib.h>, <time.h>, <windows.h>)

    #include "Menue.h"
    
    #define ESC 27
    
    COORD scrn;
    
    struct Kundendaten
    {
        char kundenvorname[30];
        char kundennachname[50];
        char kundenort[50];
        int kundenplz;
        char kundenstrasse[50];
        int kundenhausnr;
        int kundentelefon;
        int kundenfax;
        int kundennummer;
    }kunden[100];
    
    int getKey();
    void gotoxy(int xpos, int ypos);
    
    void HauptMenue(int W,int Color);
    void AdressMenu(int W,int Color);
    void BestellMenu(int W,int Color);
    void LagerMenu(int W, int Color);
    
    struct tm *ptm ;
    char   timestr[20];
    FILE *fo;
    
    int nr = 0;
    int Menue = 0;
    
    int versuch[2][2] = {{100,200}, {150,300}};
    
    COORD MenueKoord[10][10] =
    {
      {
        {15,11},{15,12},{15,13},{15,14},{15,15},{15,16},{52,11},{52,12},{52,13},{52,14}
      },
      {
        {15,7},{15,8},{15,9},{15,10},{15,11},{52,7},{52,8},{52,9},{52,10}
      },
      {
        {15,7},{15,8},{15,9},{15,10},{15,11},{52,7},{52,8},{52,9},{52,10}
      },
      {
        {15,7},{15,8},{15,9},{15,10},{15,11},{52,7},{52,8},{52,9},{52,10}
      }
    };
    
    char wahl;
    
    HANDLE hStdOut;
    
    FILE *fp;
    
    void main()
    {
    
        SetConsoleTitle("Einnahmenverarbeitungsprogramm version 1.0.1.0");
    
        int y = 0;
        int x = 0;
    
        time_t seconds = time(0);
        ptm = localtime(&seconds);;
    
        sprintf(timestr,"%02i-%02i-%04i %02i:%02i:%02i",
                (int)ptm->tm_mday,
                (int)ptm->tm_mon+1,
                (int)ptm->tm_year+1900,
                (int)ptm->tm_hour,
                (int)ptm->tm_min,
                (int)ptm->tm_sec);
    
        hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE| FOREGROUND_GREEN | FOREGROUND_INTENSITY);//| FOREGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
    
        HauptMenue(0,0);
    
        scrn.X = 5;
        scrn.Y = 10;
    
        for (;;)
        {
            wahl = getKey();
        }
        fclose (fo);
    }
    
    //---------------------------------------------------------------------------------------------
    
    int getKey()
    {
        int x = 0;
        int len = 0;
        int Pos =0;
        int k = 0;
    
        int result=getch();
    
        if (result==0)
        {
            result=256+getch();
        }
        else
            k = result;
    
        fflush(stdin);
        //Pos = len = strlen(Help);
    
        switch (result)
        {
        case 72:
    
        if(Menue == 0)
            {
            scrn.Y--;
            if (scrn.Y < 0)
                scrn.Y = 0;
            //gotoxy(scrn.X, scrn.Y);
            }
    
            if(Menue == 1)
            {
                scrn.Y = scrn.Y - 2;
                if (scrn.Y < 0)
                    scrn.Y = 0;
            }
    
            break;
        case 75:
            scrn.X--;
            if (scrn.X < 0)
                scrn.X = 0;
            // gotoxy(scrn.X--, scrn.Y );
            break;
        case 77:
            scrn.X++;
            if (scrn.X > 79)
                scrn.X = 79;
            //gotoxy(scrn.X, scrn.Y );
            break;
        case 80:
            scrn.Y++;
            if (scrn.Y > 25)
                scrn.Y = 25;
            //gotoxy(scrn.X, scrn.Y);
            break;
    
        case 97: //ALT/A
            system ("cls");
            AdressMenu(0,0);
            Menue = 1;
            break;
    
        case 115: //  ALT/S
            fo = fopen ("kundendatei.txt", "a+");
            if (fo == NULL)
            {
                printf ("Die Datei existiert nicht, sie wird jetzt angelegt!");
                fo = fopen ("kundendatei.txt", "w");
            }
            fprintf (fo, "%s %s %s %d %d %s %d %d %d %s\n", kunden[nr].kundenvorname, kunden[nr].kundennachname, kunden[nr].kundenstrasse, kunden[nr].kundenhausnr, kunden[nr].kundenplz, kunden[nr].kundenort, kunden[nr].kundentelefon, kunden[nr].kundenfax, kunden[nr].kundennummer, timestr);
            nr++;
            fclose (fo);
            break;
    
        case 315: //F1
            system ("cls");
            AdressMenu(0,0);
            Menue = 1;
            break;
    
        case 317: //F3
            system("cls");
            BestellMenu(0,0);
            Menue = 2;
            break;
    
        case 318: //F4
            system("cls");
            LagerMenu(0,0);
            Menue = 3;
            break;
    
        case ESC:
            system("cls");
            if (Menue == 0)
                exit (0);
            HauptMenue(0,0);
            Menue = 0;
            break;
    
        case VK_RETURN:
            break;
        case VK_BACK:
            break;
    
        default:
            return result;
            break;
        }
    
        SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_RED | FOREGROUND_INTENSITY);//| FOREGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
        gotoxy(5,23);
        for (x = 5; x < 75; x++)
            printf(" ");
    
        gotoxy(7,23);
        printf("X = %d , Y = %d Taste = %d \t %s", scrn.X,scrn.Y,result,timestr);
    
        gotoxy(scrn.X,scrn.Y);
        SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);//| FOREGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
        return result;
    }
    
    void HauptMenue(int W,int Color)
    {
        int y=0;
        switch (W)
        {
        case 0:
            for (y=0; y < 25; y++)
            {
                gotoxy(0,y);
                printf("%s",haupt_menu[y]);
            }
            break;
        }
        scrn.X = -1;
        scrn.Y = -1;
        gotoxy(scrn.X,scrn.Y);
    }
    
    void AdressMenu(int W,int Color)
    {
        int posX=0;
        int posY=0;
        int y=0;
        switch (W)
        {
        case 0:
            for (y=0; y < 25; y++)
            {
                gotoxy(2,y);
                printf("%s",Adress_menu[y]);
            }
            break;
    
        }
    
            SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_RED | FOREGROUND_INTENSITY);
            gotoxy(38,5);
            printf("%s","ESC");
            gotoxy(54,5);
            printf("%s","ALT/S");
            gotoxy(21,8);
            printf ("%s", "ALT/A");
            gotoxy(44,8);
            printf ("%s", "ALT/U");
            gotoxy(69,8);
            printf ("%s", "ALT/L");
            SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    
            scrn.X = 15;
            scrn.Y = 11;
            gotoxy(scrn.X,scrn.Y);
            posX = scrn.X;
            posY = scrn.Y;
            printf ("MenueKoord= %d", MenueKoord[1][2]);
    
    }
    
    void BestellMenu(int W,int Color)
    {
        int y=0;
        switch (W)
        {
        case 0:
            for (y=0; y < 25; y++)
            {
                gotoxy(2,y);
                printf("%s",bestell_menu[y]);
            }
            break;
        }
    }
    
    void LagerMenu(int W, int Color)
    {
        int y=0;
        switch (W)
        {
        case 0:
            for (y=0; y < 25; y++)
            {
                gotoxy(2,y);
                printf("%s", lager_menu[y]);
            }
            break;
        }
    }
    
    /*
      SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_GREEN | BACKGROUND_RED | FOREGROUND_INTENSITY);
      gotoxy(8,5);
      printf("%s","ESC");
      gotoxy(23,5);
      printf("%s","ALT/S");
      SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
      scrn.X = 15;
      scrn.Y = 7;
      gotoxy(scrn.X,scrn.Y);
    */
    
    void gotoxy(int xpos, int ypos)
    {
        COORD scrn;
        HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
        scrn.X = xpos;
        scrn.Y = ypos;
        SetConsoleCursorPosition(hOuput,scrn);
    }
    


  • Hallo,

    XcrAckX schrieb:

    Wenn ich z.B versuche mir den inhalt von MenueKoord[1][1] mit printf ausgeben zu
    lassen, bekomme ich immer nur die speicheradresse oder eine sonstige int zahl
    (786447), weiß nicht genau was sie darstellen soll!!

    COORD ist eine typisierte Struktur.
    http://msdn.microsoft.com/en-us/library/ms682119(VS.85).aspx (Hallo mngbd)

    An die x/y Werte kommst du mit der üblichen Strukturschreibweise, z.B.

    MenueKoord[1][1].X, MenueKoord[1][1].Y
    

    Gruß,
    B.B.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C 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.



  • OK ich danke dir vielmals.
    Werde gleich ausprobieren, das umzusetzen.
    Gruß XcrAckX



  • spätestens hier hätte man sehen können wie man COORD nutzt

    void gotoxy(int xpos, int ypos)
    {
    COORD scrn;
    HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
    scrn.X = xpos;
    scrn.Y = ypos;
    SetConsoleCursorPosition(hOuput,scrn);
    }

    structur in windows.h



  • Wenn etwas wie BOOL, COORD in Grossbuchstaben im C-Quelltext steht, ist oft Microsoft dran beteiligt. Also kann ein Blick in das MSDN nicht schaden.

    Die C-Compiler schlucken ja vieles - ist die Sammlung der Header in Menue.h denn optimal - ich hätte das aus dem Bauch raus - nur die Header die in Menue.h benutzt werden dort platziert und die anderen dort wo sie benötigt werden.

    MfG f.-th.



  • Hab mir das noch mal durchgelesen -
    du möchtest ANSI C lernen -
    der Quelltext hat aber einige Besonderheiten, die auf Mircisoft-C hinweisen und unter ANSI nicht immer funktionieren müssen.
    Aber das können dir andere besser erklären - ich mach ja C nur so zum Spass 😉

    MfG f.-th.



  • bedeutet doch nicht das man nur auf den befehlssatz von ANSI C
    zurück greifen darf. sonst wäre so ein befehl wohl nicht möglich.
    GetStdHandle(STD_OUTPUT_HANDLE);
    Es ist halt meiner meinug nach sinnvoll die ersten erfahrungen in c
    unter DOS zumachen.



  • [quote="SeppJ"]786447 = 12*2^16 + 15. Das ist der Inhalt von MenueKoord[0][1], falls COORD vom Typ short ist (und noch ein paar andere Annahmen gelten die ich jetzt mal stillschweigend voraussetze). Ob signed oder unsigned kann ich aber nicht sagen - da Koordinaten gewöhnlich auch negativ sein können wird es wahrscheinlich ein signed Typ sein.
    quote]
    Also die rechnung sagt mir nix, aber der inhalt was immer das bedeutet,
    wären dann die Koordinaten.



  • Ich dachte da mit Microsoft-C weniger an das von dir erwähnte, sondern eher an so was:

    fflush(stdin);
    

    MfG f.-th.



  • Ja stimmt ist keine sichere sache


Anmelden zum Antworten