amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > getch und gcc [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2004-11-23, 20:30 h

Bernhard
Posts: 144
User
Hallo!

Hab jetzt ein paar einfache programme von linux auf amiga übertragen und des hat auch ganz gut hingehaun, nur verwenden diese programme die "getch"-funktion. da es die unter linux aber nicht standardmäßig gibt, hab ich ein bisschen mit den terminaleinstellungen gespielt dass es geht. unter amigaos geht das auch ganz gut, nur wenn ich das mit gcc und der option "-noixemul" kompiliere gehts verständlicherweise nicht mehr. deshalb such ich ersatz dafür. gibts sowas?

Danke
Bernhard

[ - Answer - Quote - Direct link - ]

2004-11-23, 22:00 h

thomas
Posts: 7717
User

Beschreib doch mal bitte, was du machen möchtest.

Die Funktion, um ein Zeichen aus der Eingabe zu lesen ist glaube ich getchar().

Oder ist dein Problem, daß man immer eine ganze Zeile mit Return am Ende eingeben muß ? Wenn du das nicht möchtest, mußt du ein RAW: Fenster nehmen anstatt eines CON: Fensters.

Man kan zwischen den beiden auch Umschalten, mit einer Escape-Sequenz, wenn ich mich recht erinnere. Welche das ist, kann ich nachschlagen, wenn es sein muß.

Gruß Thomas
--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Answer - Quote - Direct link - ]

2004-11-24, 08:28 h

Bernhard
Posts: 144
User
Hallo!

Also eigentlich war das ein Programm für die Linux-Konsole und da sollen auf tastendrück verschiedene functionen gestartet/ausgeführt werden. d.h. wenn ich eine taste drücke, dann soll eben eine bestiimte funktion ausgeführt werden ohne dass i noch enter oder sowas drücken muss.
Und jetzt ist die frage, ob das mit irgendwelchen vorhandenen funktionen von amigaos ohne großen aufwand in der shell gemacht werden kann? wenn nicht, dann lass ichs, weil ich sowieso vorhabe eine grafische oberfläche für dieses programm zu machen.

Bernhard

[ - Answer - Quote - Direct link - ]

2004-11-24, 11:30 h

thomas
Posts: 7717
User

Hier ist ein Beispiel, wie es geht:

code:
#include <proto/dos.h>

int main (void)

{
UBYTE buffer[40];
BOOL cont;

SetMode (Input(),1);

Printf ("n"
	"Menu:n"
	"n"
	"1 - do thisn"
	"2 - do thatn"
	"3 - do nothingn"
	"0 - exitn");

cont = TRUE;
do	{
	Printf ("> ");
	Flush (Output());
	Read (Input(),buffer,1);

	switch (buffer[0])
		{
	case '1':
		Printf ("this done.n");
		break;
	case '2':
		Printf ("that done.n");
		break;
	case '3':
		Printf ("nothing done.n");
		break;
	case '0':
		Printf ("n");
		cont = FALSE;
		break;
	case 0x9b:
		Read (Input(),&buffer[1],39);
	default:
		Printf ("invalid choicen");
		}
	}
while (cont);

SetMode (Input(),0);

return (0);
}


Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Answer - Quote - Direct link - ]

2004-11-25, 18:24 h

Bernhard
Posts: 144
User
Danke, war genau das was ich gesucht habe!

nur für was sind diese zeilen?

case 0x9b:

Read (Input(),&buffer[1],39);


Bernhard

[ - Answer - Quote - Direct link - ]

2004-11-25, 19:13 h

thomas
Posts: 7717
User

Wenn du eine Funktions- oder Cursortaste drückst, kommt nicht ein einzelnes Zeichen zurück, sondern eine Kontrollsequenz. Diese beginnt mit dem CSI (Control Sequence Introducer, ASCII 9B) gefolgt von einer Zeichenkette, die die Funktion der Taste beschreibt.

Ganz übel ist das Schließsymbol des Fensters. Das gibt einen RAW-InputEvent zurück, der aus sage und schreibe fast 40 Zeichen besteht.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > getch und gcc [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.