Eingabemaske
-
Moin,
wie kann ich in der cmd eine Eingabemaske erstellen (verschiedene Feld, zwischen denen ich mit "Tab", Pfeiltasten, etc. wechseln kann).
Ich kenne sowas noch aus dBaseIIIplus, da ging so was ganz einfach:
@ 7,20 SAY 'Bitte Namen eingeben: ' GET NAME
Am Position 7,20 erscheint der Text und dahinter dann die Eingabebox. Was dann eingeben wird, wird in das Feld/Variable NAME geschrieben
-
*Nostalgieabend*
Die Bücher zum damals neuen dBase IV sind von mir
Das ist heute so was von tot ... 3+ war geilFrüher gab es mal unter DOS einen "ansi.sys", mit dem konnte man so etwas
machen. In C ist das (natürlich) kein Problem, man kann auch heute noch aus
der Cmdline direkt ins Video-RAM schreiben. Viele Kassensystem machen das
heute noch so.Ob das noch so richtig aktuell ist ? Ich habe da Zweifel. Dafür gibt es
heute die GUI.
-
Moin,
ok. Natürlich kann man das mit der GUI machen. Ich hatte mir erhofft, dass es dafür noch irgendwas unter der Konsole gibt. Ich wollte erstmal "Konsolen-C++" lernen und dann zur GUI übergehen.
In C ist das (natürlich) kein Problem, man kann auch heute noch aus
der Cmdline direkt ins Video-RAM schreiben.Das hört sich irgendwie kompliziert an und wahrscheinlich ist es das auch.
[OT]
Das ist heute so was von tot
Unter http://www.dbase.com/ gibt's das immer noch. Ist aber tatsächlich nur noch Nischenprodukt
[/OT]
-
Tja, hätten die Hochnasen von Ashton-Tate das damals nicht so in den Sand
gesetzt wäre das vielleicht heute noch etwas. Als Format zum Datenaustausch
bekomme ich das noch manchmal. Aber eher selten.Heute gibt's ja nur noch SQL (und Btrieve ... uvam).
Man sollte mal die ganzen DOS-Shells durchforsten, bestimmt gibt es da
etwas, das das kann.
-
Man sollte mal die ganzen DOS-Shells durchforsten, bestimmt gibt es da
etwas, das das kann.Natürlich ginge das. Dann müsst ich die aber jedesmal mitgeben.
Ich glaub ich bin zu folgendes Ergebnis gekommen:
- Improved Console muss reichen
- möglichst schnell GUI lernen
-
johannes-h schrieb:
Man sollte mal die ganzen DOS-Shells durchforsten, bestimmt gibt es da
etwas, das das kann.Natürlich ginge das. Dann müsst ich die aber jedesmal mitgeben.
Ich glaub ich bin zu folgendes Ergebnis gekommen:
- Improved Console muss reichen
- möglichst schnell GUI lernenJepp.
-
johannes-h schrieb:
Moin,
wie kann ich in der cmd eine Eingabemaske erstellen (verschiedene Feld, zwischen denen ich mit "Tab", Pfeiltasten, etc. wechseln kann).Für sowas kannst du dich mit den Console Functions anfreunden
http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspxMann kann sich damit was zurechtfriemeln:
#include <windows.h> #include <stdio.h> HANDLE hIn, hOut; #define BLACK 0 #define BLANK ' ' #define RETURN 13 #define IFLD_SIZE 10 char ifld[IFLD_SIZE+1]; // Inputfield :) const ifld_color = BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE; const ifld_x = 10, ifld_y = 5; const std_color = FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE; int init_console() { hIn = GetStdHandle ( STD_INPUT_HANDLE ); hOut = GetStdHandle ( STD_OUTPUT_HANDLE ); if ( hIn == INVALID_HANDLE_VALUE || hOut == INVALID_HANDLE_VALUE ) return 1; return 0; } int gotoxy ( short x, short y ) { COORD pos; pos.X = x, pos.Y = y; if ( !SetConsoleCursorPosition ( hOut, pos )) return 1; return 0; } int show_console_cursor( int show ) { CONSOLE_CURSOR_INFO cci = {0}; if ( !GetConsoleCursorInfo( hOut, &cci ) ) return 1; cci.bVisible = show; if ( !SetConsoleCursorInfo( hOut, &cci ) ) return 1; return 0; } int print_input_field ( short x, short y, int len ) { if ( !SetConsoleTextAttribute ( hOut, ifld_color )) return 1; if ( gotoxy ( x, y )) return 1; while ( len-- ) putchar( BLANK ); return 0; } int input() { int i = 0, n = sizeof(ifld); if ( gotoxy ( ifld_x, ifld_y )) return 1; while ( i <= IFLD_SIZE ) { if ( ( ifld[i] = getche() ) == RETURN ) { ifld[i] = 0; break; } else i++; } gotoxy ( ifld_x, ifld_y + 2 ); SetConsoleTextAttribute ( hOut, std_color ); if ( i > IFLD_SIZE ) { ifld[IFLD_SIZE] = 0; puts ( "Input too long!" ); } return 0; } int main () { if ( init_console() ) return 1; show_console_cursor(0); if ( print_input_field ( ifld_x, ifld_y, sizeof(ifld) )) return 1; if ( input() ) return 1; gotoxy ( ifld_x, ifld_y + 3 ); printf ("Input field content: %s\n", ifld ); gotoxy ( ifld_x, ifld_y + 4 ); return 0; }
Gruß,
B.B.
-
Moin,
Erstmal danke.
Kann es sein, dass das mit'm QtCreator (MinGW) nicht funktioniert. Es erscheinen folgend Build-Fehler:
main.cpp:13: error: ISO C++ forbids declaration of 'ifld_color' with no type main.cpp:14: error: ISO C++ forbids declaration of 'ifld_x' with no type main.cpp:14: error: ISO C++ forbids declaration of 'ifld_y' with no type main.cpp:15: error: ISO C++ forbids declaration of 'std_color' with no type main.cpp: In function 'int input()': main.cpp:54: error: 'getche' was not declared in this scope main.cpp:51: warning: unused variable 'n'
[EDIT] Die Console-Funktions werd ich mir auch mal angucken[/EDIT]
-
Das ist ein simples C Programm, für nen C++ Compiler musst du wohl
const int als Typ nehmen und die getche Deklaration steckt in der conio.h.
-
Danke, das wars. Jetzt klappts.