PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal wieder ne c frage: scrollbare listen?


mf_2
2004-02-14, 12:32:33
Hallo,

Gibt es in C die Möglichkeit, scrollbare Listen mit einträgen zu erstellen?

Ich habe ein Array laender[5].
In diesem stehen z.b. England, Deutschland, Frankreich, Schweden, USA.

Nun soll aus den Werten eine Liste erstellt werden. Dort soll man dann mtihilfe der Cursortasten der tastatur ein eintrag auswählen. Ich kenne das schon von anderen Programmen, ist es einfach so etwas in c zu realisieren?

Xmas
2004-02-14, 13:48:19
Meinst du im Textmodus oder in einer grafischen Oberfläche?

Darf man fragen was du eigentlich Programmieren willst und zu welchem Zweck? Mir scheint fast, dass für das was du tun willst C gerade eine der am wenigsten geeigneten Sprachen ist.

mf_2
2004-02-14, 14:52:37
Ich möchte ein kleines Vorkabellernprogramm schreiben. Allerdings soll es kein GUI haben.
Es soll im Textmodus laufen.

Xmas
2004-02-14, 15:29:09
Wieso ausgerechnet keine GUI? Mit dem Textmodus bürdest du dir eine Menge Stress auf.
Da du bei Vokabeln viele Strings sowie Listen- und Map-Typen brauchst, ist C wirklich eine der ungeeignetsten Sprachen.

Brillus
2004-02-15, 01:44:33
Also ich habe mir einen Super Vokalbertrainer im Textmodus prgrammiert 2 Objekte und ein IO system rund 500 Zeilen ist weitaus effizenter als mit Gui vor allem auch wenn man nachher teset keine rumgefummel mit der Maus eifach nur die hand auf der Tastatur lassen.

Brillus
2004-02-15, 01:48:56
Bin etwas müde und habe auch bisschen was an Alk im Schäde sonst hätte ich vielelciht früher dran gedacht als anhang der quellcode von meienn prog

Legolas
2004-02-15, 03:13:50
Dein Programm ist aber C++, Brillus :)

mf_2
2004-02-15, 12:15:37
C++ kann ich leider überhaupt nicht, daher sagt mir dein Quellcode auch ned viel , aber trotzdem danke.

Back on topic:

Weiss einer wie man solche Listen in C ( nicht cpp ) macht?
Details siehe erstes Posting in diesem Thread.

Xmas
2004-02-15, 13:17:37
Original geschrieben von Brillus
Also ich habe mir einen Super Vokalbertrainer im Textmodus prgrammiert 2 Objekte und ein IO system rund 500 Zeilen ist weitaus effizenter als mit Gui vor allem auch wenn man nachher teset keine rumgefummel mit der Maus eifach nur die hand auf der Tastatur lassen.
Auch bei einer GUI kannst du reine Tastatursteuerung verwenden. Außerdem verwendest du ja einfach nur fortlaufende Ausgabe, mf_2 möchte aber wohl GUI-Elemente im Textmodus.

Brillus
2004-02-15, 13:50:22
Gut ich habe ja schon oben geschrieben das ich gestern nicht mehr so ganz dabei war.

Was mir mal bei der Protierung auf Linux unfgefallen ist, ist das man du Funktion start auch in den Konstruktor der liste schreiben kann.

Und 2. beim compielerung unter Linux muss man aufpassen das man aufpassen da VC++ und Cpp anderster auf gets() reagiert. Das ist der Grund warum ich vor jeden gets noch ein
cout <<endl;
steht sonst liest der manchmal einen Leerstring ein unter Linux ist dise Reaktion nach meinen Wissen genau anders(sicher bin ich mir nichtmehr ist schon etwas her).

Nur falls hier viellicht jemand ist der es vielleicht nutzen will.

mf_2
2004-02-15, 16:49:21
Also ich hab hier nochmal versucht zu verdeutlichen, was ich machen will:

http://mf2server.dynserv.net/liste.bmp

So hab ich das z.b auch schon bei der Windows 1.01 installation gesehen, oder bei der DOS installation, und deswegen dachte ich, dass es durchaus in C machbar sein müsste.

Obligaron
2004-02-16, 15:47:21
"The _getch function reads a single character from the console without echoing. _getche reads a single character from the console and echoes the character read. Neither function can be used to read CTRL+C. When reading a function key or an arrow key, _getch and _getche must be called twice; the first call returns 0 or 0xE0, and the second call returns the actual key code."
Abfrage sieht also so aus:
if(getch()==224){
switch (getch()){
case 75:
printf("links\n");
break;
case 77:
printf("rechts\n");
break;
case 72:
printf("oben\n");
break;
case 80:
printf("unten\n");
break;
default:
printf("was anderes\n");
break;
}
};
dann z.B. mit gotoxy an die passenden stelle springen und dort den text neu schreiben mit passender farbe
also alles per hand machen ;)

mf_2
2004-02-16, 16:49:08
Wenn ich das so einbinde wie du sagst, wird bei mir garnichts ausgegeben, ganz egal, welche Pfeiltaste ich drücke.

Obligaron
2004-02-17, 11:13:26
int iReturnValue = getch();
if(iReturnValue==0xE0 || iReturnValue == 0){
switch (getch()){

funktioniert es so?
Bei mir (win2k) läuft es aufjedenfall :/

mf_2
2004-02-17, 14:31:04
Danke, jetzt zeigt er mir die Texte an wenn ich ne Cursortaste drücke.

Noch ne frage wegen den listen:
Wie kann ich erreichen, dass ein Eintrag eingefärbt wird, der bereits auf dem Bildschrim steht? bisher kam in meiner textbildschirmanwendung alles untereinander, kann ich auch bereits geschriebene zeichen nachträglich verändern?

Obligaron
2004-02-17, 14:35:29
Du springst mit gotoxy an die stelle wo der alte Text ist, setzte die passende Farbe und schreibst einfach drüber ;).
Brauchst also keinen alten Text verändern.

MfG

mf_2
2004-02-18, 14:31:37
Hallo,

Wie kann ich die Hintergrundfarbe und die Textfarbe ändern?

Thx,
mf_2

mf_2
2004-02-19, 13:05:30
Noch ne Frage zu der switch-Anweisung:

Welchen Zahlencode hat denn die Return-Taste?
Wo gibts ne Tabelle dazu?
Ich hab mir schon eine ASCII und eine ANSI Tabelle angesehen, aber da stehen nicht mal die Codes für die Pfeiltasten drin, die du im Code hast ( 72,75,77 und 80 ) geschweige denn der Code für die Return-Taste.

Obligaron
2004-02-19, 15:59:40
int iReturnValue = getch();
if(iReturnValue==0xE0 || iReturnValue == 0){
switch (getch()){
case 75:
printf("links\n");
break;
case 77:
printf("rechts\n");
break;
case 72:
printf("oben\n");
break;
case 80:
printf("unten\n");
break;
default:
printf("was anderes\n");
break;
}
}
else if(iReturnValue==13){
printf("Return");
}
13 == '\r' == VK_RETURN
;)

Für das ändern der Textfarbe gibt es mehrere Möglichkeiten die von der verwendeten Entwicklungsumgebungen abhängen, am besten ein bischen googeln.

MfG