Hallo liebe Community,
ich wollte in einem kleinen Project einen Rahmen in einer ConsolenanwendungZeichnen..
Ich hatte das schonmal aber in c.. hier der Code dazu.
Spoiler anzeigen
Nun Zur Frage, wie kann ich in vb in einer Consolenanwendung mit einem Ascii code oder Hex-Code Zeichen, zum Beispiel die Rechte obere Ecke, Laut liste den code10 also 0x10
Das Funktioniert aber so niccht, hat jemand eine Idee oder einen Tipp?
Beste Grüße
ich wollte in einem kleinen Project einen Rahmen in einer ConsolenanwendungZeichnen..
Ich hatte das schonmal aber in c.. hier der Code dazu.
Quellcode
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<conio.h>
- /*Erweiterte Tastaturcodes*/
- #define vcF1 0x3b
- #define vcF2 0x3c
- #define vcF3 0x3d
- #define vcF4 0x3e
- #define vcF5 0x3f
- #define vcESC 0x1b
- #define vcANZAHL 20
- #define vcCR 0x0d
- #define vcBACK 0x08
- #define vcF6 0x40
- #define UE (unsigned char)154
- #define ue (unsigned char)129
- //Definierung der ASCII Zeichenketten Balken
- #define linksoben 201
- #define rechtsoben 0xbb
- #define rechtsunten 0xbc
- #define linksunten 0xc8
- #define horizontal 0xcd
- #define vertikal 0xba
- #define zeile 204
- /*Funktionsprototypen*/
- void menue(void);
- short getshort(short);
- float getfloat(short, short);
- void getstring(char *, short);/* "*" is the ram location*/
- void gettyp(char *, short);
- void getbaujahr(char *, short);
- long getlong(short);
- void getfarbe(unsigned char*, short);
- /*Struktur definieren*/
- struct pkw
- {
- char Marke[20];
- char Typ[20];
- unsigned char Farbe[15];
- short Leistung;
- char Baujahr[5];
- long Preis;
- };
- void main()
- {
- //Consolenfenster bei mac im vollbildmodus zulassen wmic
- system("mode 800");
- //Consolnfarbe ändern
- system("color F4");
- //Variablendeklaration
- short param;
- short n;
- char ch;
- short i;
- short nr;
- short sortiert;
- char q;
- char j;
- char Typ[20];
- char Marke[20];
- char asc;
- //Deklaration einer Structurfeldvariable
- struct pkw pkwlist[100];
- /*Deklaration einer Strukturvariable*/
- struct pkw h;
- FILE *file_in;
- FILE *file_out;
- /*initialisierung*/
- param = 0;
- n = 0;
- asc = 0xba;
- //Datei anlegen und Öffnen
- fopen_s(&file_in, "Automarkt.txt", "r");
- //Absicherung
- if (file_in == NULL)
- {
- system("cls");
- printf("\n");
- printf("\n Die Datei Automarke.txt wurde nicht Gefunden!");
- printf("\n");
- printf("\n Weiter mit beliebiger Taste!");
- _getch();
- }
- else
- {
- //Anzahl der Artikel Speichern
- fread(&n, sizeof(short), 1, file_in);
- for (i = 0; i < n; i++)
- {
- //Einen Artikel Speichern
- fread(&pkwlist[i], sizeof(pkw), 1, file_in);
- }
- //Datei Schließen
- fclose(file_in);
- }
- //Menü aufrufen
- menue();
- /*Kopfgesteuerte Schleife*/
- while ((ch = _getch()) != vcESC)
- {
- if (param == 1)
- {
- //Neues fahrzeug hinzufügen
- if (ch == vcF1)
- {
- system("cls");
- printf("\n Neues Auto");
- printf("\n =============");
- printf("\n");
- //Eingabe Marke
- printf("\n Marke: ");
- getstring(pkwlist[n].Marke, vcANZAHL);
- //Eingabe Typ
- printf("\n Typ: ");
- gettyp(pkwlist[n].Typ, vcANZAHL);
- //Eingabe Leistung
- printf("\n Leistung: ");
- pkwlist[n].Leistung = getshort(4);
- //Eingabe Farbe
- printf("\n Farbe: ");
- getfarbe(pkwlist[n].Farbe, 15);
- //Eingabe Baujahr
- printf("\n Baujahr: ");
- getbaujahr(pkwlist[n].Baujahr, 4);
- //Eingabe Preis
- printf("\n Preis: ");
- pkwlist[n].Preis = getlong(6);
- //Wenn typ nicht ausgefüllt dann nicht Speichern
- for (i = 0; pkwlist[n].Typ[i] != '\0'; i++);
- printf("\n i = %d", i);
- if (i>0) n++;
- //bremse
- printf("\n");
- printf("\n Weiter mit beliebiger Taste ");
- _getch();
- //Menü nach tastendruck aufrufen
- menue();
- }
- //Fahrzeugliste aufrufen
- else if (ch == vcF2)
- {
- system("cls");
- printf("\n Fahrzeugliste");
- printf("\n =============");
- printf("\n");
- //Rahmen links oben
- putchar(linksoben);
- //Gerader Rahmen bis Zeichen 1005
- for (i = 1; i < 105; i++)
- putchar(horizontal);
- //Rechte obere Ecke
- putchar(rechtsoben);
- //Leerzeile aus dem Array rausnehmen
- printf("\n");
- putchar(vertikal) + printf(" Nr. | Marke | Typ | Leistung| Farbe | Baujahr | Preis ") + putchar(vertikal);
- /* Alle Artikel ausgeben */
- for (i = 0; i < n; i++)
- {
- printf("\n");
- putchar(vertikal) + printf(" %3d %c %-20s | %-20s | %4d | %-15s | %5s | %6d EUR ", i + 1, asc, pkwlist[i].Marke, pkwlist[i].Typ, pkwlist[i].Leistung, pkwlist[i].Farbe, pkwlist[i].Baujahr, pkwlist[i].Preis) + putchar(vertikal);
- }
- printf("\n");
- putchar(linksunten);
- //Rahmen, boden
- for (i = 1; i < 105; i++)
- putchar(horizontal);
- //Ecke rechts unten
- putchar(rechtsunten);
- /* Bremse */
- printf("\n");
- printf("\n Weiter mit beliebiger Taste!");
- _getch();
- //Nach tastendruck das menue aufrufen
- menue();
- }
- //Fahrzeug entfernen
- else if (ch == vcF3)
- {
- system("cls");
- printf("\n Fahrzeug entfernen");
- printf("\n =================");
- printf("\n");
- printf("\n");
- printf("|Nr. | Marke | Typ | Leistung| Farbe | Baujahr | Preis |");
- printf("\n__________________________________________________________________________________________________________");
- for (i = 0; i < n; i++)
- {
- printf("\n| %3d | %-20s | %-20s | %4d | %-15s | %5s | %6d EUR | ", i + 1, pkwlist[i].Marke, pkwlist[i].Typ, pkwlist[i].Leistung, pkwlist[i].Farbe, pkwlist[i].Baujahr, pkwlist[i].Preis);
- }
- printf("\n");
- printf("\n");
- /* Zu entfernenden Artikel bestimmen */
- printf("\n Fahrzeug Nr.: ");
- nr = getshort(2);
- /* Sicherheitsabfrage */
- if (nr <= n)
- {
- /* Alle nachfolgenden Artikel um eine Position nach vorne holen */
- for (i = nr - 1; i < n; i++)
- {
- pkwlist[i] = pkwlist[i + 1];
- }
- /* Anzahl um eins reduzieren */
- n--;
- }
- else
- {
- printf("\n Diese Nummer gibt es nicht!");
- }
- system("cls");
- printf("\n");
- printf("\n");
- printf("|Nr. | Marke | Typ | Leistung| Farbe | Baujahr | Preis |");
- printf("\n__________________________________________________________________________________________________________");
- for (i = 0; i < n; i++)
- {
- printf("\n| %3d | %-20s | %-20s | %4d | %-15s | %5s | %6d EUR | ", i + 1, pkwlist[i].Marke, pkwlist[i].Typ, pkwlist[i].Leistung, pkwlist[i].Farbe, pkwlist[i].Baujahr, pkwlist[i].Preis);
- }
- printf("\n");
- printf("\n");
- printf("\n Weiter mit beliebiger Taste!");
- _getch();
- //Menue aufrufen
- menue();
- }
- //Sortieren nach Marke
- else if (ch == vcF4)
- {
- //Sortieren nach marke
- do
- {
- //Zahlen in richtiger Reihenfolge
- sortiert = 1;
- for (i = 0; i < n - 1; i++)
- {
- if (strcmp(pkwlist[i].Marke, pkwlist[i + 1].Marke) > 0)
- {
- h = pkwlist[i];
- pkwlist[i] = pkwlist[i + 1];
- pkwlist[i + 1] = h;
- sortiert = 0;
- }
- }
- } while (sortiert != 1);
- system("cls");
- printf("\n Alles wurde nach Marke Sortiert");
- printf("\n Weiter mit beliebiger Taste!");
- printf("\n");
- printf("\n");
- printf("|Nr. | Marke | Typ | Leistung| Farbe | Baujahr | Preis |");
- printf("\n__________________________________________________________________________________________________________");
- for (i = 0; i < n; i++)
- {
- printf("\n| %3d | %-20s | %-20s | %4d | %-15s | %5s | %6d EUR | ", i + 1, pkwlist[i].Marke, pkwlist[i].Typ, pkwlist[i].Leistung, pkwlist[i].Farbe, pkwlist[i].Baujahr, pkwlist[i].Preis);
- }
- printf("\n");
- printf("\n");
- printf("\n Alles wurde nach Marke Sortiert");
- printf("\n Weiter mit beliebiger Taste!");
- _getch();
- //Menue aufrufen
- menue();
- }
- //Sortieren nach Leistung ?
- else if (ch == vcF5)
- {
- /* Bubble-Sort- nach Leistung Sortiert */
- do
- {
- /* Zahlen in richtiger Reihenfolge */
- sortiert = 1;
- for (i = 0; i < n - 1; i++)
- {
- if (pkwlist[i].Leistung > pkwlist[i + 1].Leistung)
- {
- /* Dreieckstausch */
- h = pkwlist[i];
- pkwlist[i] = pkwlist[i + 1];
- pkwlist[i + 1] = h;
- /* Zahlen sind noch nicht in der richtigen Reihenfolge */
- sortiert = 0;
- }
- }
- } while (sortiert != 1);
- system("cls");
- printf("\n Alles wurde nach Leistung Sortiert");
- printf("\n");
- printf("\n");
- printf("|Nr. | Marke | Typ | Leistung| Farbe | Baujahr | Preis |");
- printf("\n__________________________________________________________________________________________________________");
- for (i = 0; i < n; i++)
- {
- printf("\n| %3d | %-20s | %-20s | %4d | %-15s | %5s | %6d EUR | ", i + 1, pkwlist[i].Marke, pkwlist[i].Typ, pkwlist[i].Leistung, pkwlist[i].Farbe, pkwlist[i].Baujahr, pkwlist[i].Preis);
- }
- printf("\n");;
- printf("\n");
- printf("\n Weiter mit beliebiger Taste!");
- _getch();
- //Menüaufruf nach Tastendruck
- menue();
- }
- //Fahrzeug Suchen.. ?
- else if (ch == vcF6)
- {
- system("cls");
- printf("\n Fahrzeug Suchen.");
- printf("\n");
- //Marke eingeben
- printf("\n Marke: ");
- getstring(Marke, 20);
- //Typ eingeben
- printf("\n Typ: ");
- gettyp(Typ, 20);
- //Fenster leeren
- system("cls");
- //Ausgabe der Eingegebenen Kriterien
- printf("Ihre eingaben: %s , %s", Marke, Typ);
- printf("\n");
- printf("\nErgebnis: ");
- printf("\n");
- printf("\n");
- printf("|Nr. | Marke | Typ | Leistung| Farbe | Baujahr | Preis |");
- printf("\n__________________________________________________________________________________________________________");
- for (i = 0; i < n; i++)
- {
- if (strcmp(Typ, pkwlist[i].Typ) == 0 && strcmp(Marke, pkwlist[i].Marke) == 0)
- {
- printf("\n| %3d | %-20s | %-20s | %4d | %-15s | %5s | %6d EUR | ", i + 1, pkwlist[i].Marke, pkwlist[i].Typ, pkwlist[i].Leistung, pkwlist[i].Farbe, pkwlist[i].Baujahr, pkwlist[i].Preis);
- }
- }
- //Auf Tastendruck warten
- _getch();
- //Menü aufrufen
- menue();
- }
- }
- else if (ch == NULL)
- {
- /*Kennzeichnung einer Funktiontaste*/
- param = 1;
- }
- }
- //Datei anlegen und Öffnen
- fopen_s(&file_out, "Automarkt.txt", "w");
- //Anzahl der Artikel Speichern
- fwrite(&n, sizeof(short), 1, file_out);
- for (i = 0; i < n; i++)
- {
- //Einen Artikel Speichern
- fwrite(&pkwlist[i], sizeof(pkw), 1, file_out);
- }
- //Datei Schließen
- fclose(file_out);
- }
- void menue()
- {
- system("cls");
- printf("\n Automarkt");
- printf("\n _________");
- printf("\n");
- printf("\n F1 - Neues Fahrzeug");
- printf("\n F2 - Fahrzeugliste");
- printf("\n F3 - Fahrzeug entfernen");
- printf("\n F4 - Sortieren nach Marke");
- printf("\n F5 - Sortieren nach Leistung");
- printf("\n F6 - Fahrzeug Suchen");
- printf("\n ESC - Programmende");
- printf("\n ");
- printf("\n Ihre Wahl: ");
- }
- /* Eingabefunktion */
- short getshort(short n)
- {
- /* Variablendeklaration */
- char ch;
- short zahl;
- short counter;
- /* Initialisierung */
- zahl = 0;
- counter = 0;
- /* Eingabeprüfung */
- while ((ch = _getch()) != vcCR)
- {
- /* Ziffernfreigabe */
- if (ch >= '0' && ch <= '9')
- {
- if (counter < n)
- {
- counter++;
- _putch(ch);
- zahl = zahl * 10 + (ch - 48);
- }
- }
- /* Korrektur definieren */
- else if (ch == vcBACK)
- {
- if (counter > 0)
- {
- counter--;
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- zahl = zahl / 10;
- }
- }
- }
- /* Rückgabewert abschicken */
- return zahl;
- }
- float getfloat(short v, short n)
- {
- /* Variablendeklaration */
- char ch;
- short vnum;
- short nnum;
- short vcounter;
- short ncounter;
- short komma;
- short i;
- float zahl;
- float divisor;
- /* Initialisierungen */
- divisor = 1;
- vnum = 0;
- nnum = 0;
- vcounter = 0;
- ncounter = 0;
- komma = 0;
- /* Eingabeprüfung */
- while ((ch = _getch()) != vcCR)
- {
- /* Ziffernfreigabe */
- if (ch >= '0' && ch <= '9')
- {
- /* Zahl vor dem Komma */
- if (komma == 0)
- {
- if (vcounter < v)
- {
- _putch(ch);
- vnum = vnum * 10 + (ch - 48);
- vcounter++;
- }
- }
- /* Zahl nach dem Komma */
- else
- {
- if (ncounter < n)
- {
- _putch(ch);
- nnum = nnum * 10 + (ch - 48);
- ncounter++;
- }
- }
- }
- /* Kommafreigabe */
- else if (ch == ',')
- {
- komma++;
- if (komma > 1)
- komma = 1;
- else
- _putch(ch);
- }
- /* Korrekturfreigabe */
- else if (ch == vcBACK)
- {
- /* Korrektur vor dem Komma */
- if (komma == 0 && vcounter > 0)
- {
- vnum = vnum / 10;
- vcounter--;
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- }
- /* Korrektur des Kommas */
- else if (komma == 1 && ncounter == 0)
- {
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- komma = 0;
- }
- /* Korrektur nach dem Komma */
- else if (komma == 1 && ncounter > 0)
- {
- nnum = nnum / 10;
- ncounter--;
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- }
- }
- }
- /* Divisor für die Nachkommastellen */
- for (i = 0; i < ncounter; i++)
- divisor = divisor * 10;
- /* Zahlenwert zusammenbauen */
- zahl = vnum + nnum / divisor;
- /* Rückgabewert */
- return zahl;
- }
- void getstring(char*pt, short n)
- {
- /*Variablendeklaration*/
- char ch;
- /*Zeigerdeklaration*/
- char*pt1;
- /*Startadresse merken*/
- pt1 = pt; /*pointer, zeiger*/
- /*Endlosschleife*/
- while ((ch = _getch()) != vcCR)
- {
- /*Großbustaben freischalten*/
- if (ch >= 'A'&& ch <= 'Z')
- {
- if (pt - pt1<n)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Kleinbustaben freischalten*/
- if (ch >= 'a'&& ch <= 'z')
- {
- if (pt - pt1 < n - 1)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Weitere Zeichen freischalten*/
- else if (ch == ' ' || ch == '-')
- {
- if (pt - pt1 < n - 1)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Weitere Zeichen freischalten*/
- else if (ch == vcBACK)
- {
- if (pt>pt1)
- {
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- pt--;
- }
- }
- }
- /* Terminierungszeichen anhängen*/
- *pt = 0;
- }
- void gettyp(char*pt, short n)
- {
- /*Variablendeklaration*/
- char ch;
- /*Zeigerdeklaration*/
- char*pt1;
- /*Startadresse merken*/
- pt1 = pt; /*pointer, zeiger*/
- /*Endlosschleife*/
- while ((ch = _getch()) != vcCR)
- {
- /*Großbustaben freischalten*/
- if (ch >= 'A'&& ch <= 'Z')
- {
- if (pt - pt1<n)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Kleinbustaben freischalten*/
- else if (ch >= 'a'&& ch <= 'z')
- {
- if (pt - pt1 < n - 1)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- else if (ch >= '0'&& ch <= '9')
- {
- if (pt - pt1 < n - 1)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Weitere Zeichen freischalten*/
- else if (ch == ' ' || ch == '-')
- {
- if (pt - pt1 < n - 1)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Weitere Zeichen freischalten*/
- else if (ch == vcBACK)
- {
- if (pt>pt1)
- {
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- pt--;
- }
- }
- }
- /* Terminierungszeichen anhängen*/
- *pt = 0;
- }
- void getbaujahr(char*pt, short n)
- {
- /*Variablendeklaration*/
- char ch;
- /*Zeigerdeklaration*/
- char*pt1;
- /*Startadresse merken*/
- pt1 = pt; /*pointer, zeiger*/
- /*Endlosschleife*/
- while ((ch = _getch()) != vcCR)
- {
- /*Großbustaben freischalten*/
- if (ch >= '0'&& ch <= '9')
- {
- if (pt - pt1<n)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Weitere Zeichen freischalten*/
- else if (ch == vcBACK)
- {
- if (pt>pt1)
- {
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- pt--;
- }
- }
- /* Terminierungszeichen anhängen*/
- *pt = 0;
- }
- }
- long getlong(short n)
- {
- /* Variablendeklaration */
- char ch;
- long zahl;
- long counter;
- /* Initialisierung */
- zahl = 0;
- counter = 0;
- /* Eingabeprüfung */
- while ((ch = _getch()) != vcCR)
- {
- /* Ziffernfreigabe */
- if (ch >= '0' && ch <= '9')
- {
- if (counter < n)
- {
- counter++;
- _putch(ch);
- zahl = zahl * 10 + (ch - 48);
- }
- }
- /* Korrektur definieren */
- else if (ch == vcBACK)
- {
- if (counter > 0)
- {
- counter--;
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- zahl = zahl / 10;
- }
- }
- }
- /* Rückgabewert abschicken */
- return zahl;
- }
- void getfarbe(unsigned char *pt, short n)
- {
- /*Variablendeklaration*/
- unsigned char ch;
- /*Zeigerdeklaration*/
- unsigned char *pt1;
- /*Startadresse merken*/
- pt1 = pt; /*pointer, zeiger*/
- /*Endlosschleife*/
- while ((ch = _getch()) != vcCR)
- {
- /*Kleinbustaben freischalten*/
- if (ch >= 'a'&& ch <= 'z')
- {
- if (pt - pt1<n)
- {
- *pt = ch;
- _putch(*pt);
- pt++;
- }
- }
- /*Weitere Buchstaben freischalten*/
- else if (ch == 129 || ch == 132)
- {
- if (pt - pt1 < n - 1)
- {
- *pt = ch;
- putchar(*pt);
- pt++;
- }
- }
- /*Weitere Zeichen freischalten*/
- else if (ch == vcBACK)
- {
- if (pt>pt1)
- {
- _putch(vcBACK);
- _putch(' ');
- _putch(vcBACK);
- pt--;
- }
- }
- /* Terminierungszeichen anhängen*/
- *pt = 0;
- }
- }
Nun Zur Frage, wie kann ich in vb in einer Consolenanwendung mit einem Ascii code oder Hex-Code Zeichen, zum Beispiel die Rechte obere Ecke, Laut liste den code10 also 0x10
Das Funktioniert aber so niccht, hat jemand eine Idee oder einen Tipp?
Beste Grüße