PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle aus ASCII-Zeichen erstellen...



jean_luc_picard
10-04-2004, 19:21
Hallo Leute,

ich habe ein kleines Programm geschrieben und möchte nun die Ausgaben in eine Tabelle schreiben, so dass das Ganze übersichtlicher wird. Früher hatte ich mal eine Tabelle aus ASCII-Zeichen erstellt. Da gab es Ecken, Kreuze und Linien als Zeichen (ich glaube das war noch DOS). Jetzt wollte ich das wieder so machen... leider scheinen diese Zeichen unter Linux nicht vorhanden zu sein. Wie kann man denn sowas alternativ lösen? Ich kann nur in C programmieren, und das auch nicht besonders gut...

Gruß, Picard

panzi
10-04-2004, 22:07
Ich denk auch hier sollte ncurses die Lösung sein. Wie genau das jetzt aber mit dieser Bibliothek geht weiß ich leider auch nicht. Ich kenn nur einige Terminalapplikationen die Tabellen und "Widgets" auf dem Terminal ausgeben, von denen ich weiß, dass sie mit ncurses programmiert wurden.
Vieleicht hilft man ncurses (http://unixhelp.ed.ac.uk/CGI/man-cgi?ncurses)?
Und im speziellen vieleicht die Funktionen unter: man curs_border (http://unixhelp.ed.ac.uk/CGI/man-cgi?curs_border).

peschmae
11-04-2004, 07:33
N NCurses-Howto ist hier: http://en.tldp.org/HOWTO/NCURSES-Programming-HOWTO/

Allerdings dürfte das auch "direkt" irgendwie zu machen sein. Schliesslich kann/darf die NCurses-Bibliothek auch nicht mehr als du: Nämlich "normale" Zeichen und Escape-Sequenzen an das Terminal schicken.
Nur mit was für Sequenzen du die Ecken und so hinkriegst weiss ich nicht.

MfG Peschmä

jean_luc_picard
11-04-2004, 10:47
Danke für die Links, die helfen mir schon weiter. Eine Tabelle würde ich jetzt problemlos hinbekommen. Die Funktionen, die ncurses bereitstellt sind aber verlockend... ich werde an meinem Programm noch einige Änderungen durchführen.

Mein Programm (ein Simulationsprogramm) wird mit einigen Eingabewerten gefüttert, die vom Benutzer geändert werden sollen. Ich stelle mir das im Moment so vor, dass man die aktuell eingegebenen Werte auf dem Bildschirm ausgibt und in einen Editier-Modus wechselt. Bei diesem soll man dann mit den Cursor-Tasten den zu ändernden Wert auswählen (ausgewählter wert in anderem Farbschema, z.B. schwarz auf weiß), Enter drücken und Editieren.
Ich denke, ich werde das auch hinbekommen... bin nur leider etwas unter Zeitdruck ;), also wenn ihr da noch ein paar Hinweise hättet wäre das super...

Danke, Gruß Picard

panzi
11-04-2004, 18:41
Original geschrieben von peschmae
N NCurses-Howto ist hier: http://en.tldp.org/HOWTO/NCURSES-Programming-HOWTO/

Allerdings dürfte das auch "direkt" irgendwie zu machen sein. Schliesslich kann/darf die NCurses-Bibliothek auch nicht mehr als du: Nämlich "normale" Zeichen und Escape-Sequenzen an das Terminal schicken.
Nur mit was für Sequenzen du die Ecken und so hinkriegst weiss ich nicht.

MfG Peschmä

Das Prob. ist nur, dass das total Terminal abh. ist. Und ncurses abstrahiert das. Und überhaupt sind die methoden von ncurses simpler als wenn du dir erst selbst Funktionen zum Linienzeichnen usw. zambasteln müsstest.

peschmae
11-04-2004, 20:39
Ja. Ich hate nicht genau gelesen :(
Hab irgendwie gemeint er hätte das Programm schon für Dos mit entsprechenden DOS-Spezifischen Spezialzeichen. Wenn man dann die einfach durch Linux-Spezifische (die es ja auch gibt) ersetzt hätte ...

verspreche Besserung :)

MfG Peschmä

THEReapMan
12-04-2004, 11:23
Das gleiche problem hab ich zur Zeit auch. zwar kann ich mit 'vline' und 'hline' reine Linien ziehen, aber die "verbindungsstücke" wie kreuze usw. finde ich nicht.

Da Linux/C/whatever die ANSI-Zeichen Tabelle benutzt (is doch so oder?) gibts die irgendwie nicht. Kann man das Terminal irgendwie in den ASCII-Modus zwingen? weil da gibts die Zeichen ja.
Und ne andre Frage ist, wie zeichnet Ncurses diese Zeichen? vieleicht über ESC-Sequenzen?

Markus

jean_luc_picard
12-04-2004, 23:55
Doch... es gibt alles in ncurses ;)



//ecken
mvaddch(0,0,ACS_ULCORNER);
mvaddch(0,col-1,ACS_URCORNER);
mvaddch(row-1,0,ACS_LLCORNER);
mvaddch(row-1,col-1,ACS_LRCORNER);

//tee's
mvaddch(6,0,ACS_LTEE);
mvaddch(6,col-1,ACS_RTEE);
mvaddch(6,col/2,ACS_TTEE);
mvaddch(11,col/2,ACS_BTEE);


Ein
grep ACS_ /usr/include/curses.h
zeigt noch mehr mögliche Angaben.

Gruß, Picard

stefan-tiger
13-04-2004, 11:10
hallo,

ich habe ein ähnliches problem. bin programmieranfänger mit C, habe mir ein buch gekauft das ich gerade durchmache.

nun bin ich bei einer aufgabe angelangt die erfordert dass ich ASCII-grafik mache. kein ncurses oder so.

in dem buch sind tabellen, unter "oem extended ascii code" sind unter hex B3 bis DA lauter zeichen die man als linien, kreuzungen etc. benutzen kann.

im gleichen buch ist dann noch eine "ansi extended ascii code" tabelle, in der z.b. beim hex B3 ein "hoch drei" zeichen ist, statt einem senkrechten strich.

in dem programm brauch ich aber die zeichen von "oem extended ascii code" , wie bekomme ich die?

gruß