DOS Corsur Position verändern?
-
Wie verändere ich die Corsur Position in DOS (ohne ANSI.SYS)?
Hab da Assembler Code gefunden(BIOS Interrupt, weis aber nicht wie ich ihn anwenden kannhttp://www.datasource.de/programmierung/tab08_biosint10h.html
-
Hi sam_sam!
Wenn du in DOS programmierst, empfehle ich dir Borland Compiler V3,
da ist dein Wunsch nach Cursor Positionierung schon ausprogrammiert mit der
Funktion gotoxy(x,y), und befindet sich wenn ich mich richtig erinnere in der
"conio.h".
Nachdem ich aber nicht annehme das du wirklich unter DOS Programmierst, sondern
eine Konsolenanwendung schreibst empfehle ich die die Improved Console 4.0
von Moderator Sidewinder.
Die bietet einige Zusatzfunktionen wie Farbe, Löschen des Bildschirms, etc.
Genauere Infromationen findest du unter:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-131915.htmlNachdem ich mich mal selbst dafür interessiert habe, hab ich mir folgende
Funktion zusammengebastelt, damit brauchst du nur deine x/y Koordinaten
angeben, und der Cursor springt dorthin.Dein Koordinatennullpunkt befindet sich in der linken oberen Ecke;
positive x Richtung geht nach rechts und die y-Richtung geht nach unten!!!Nachteil ->funktioniert nur auf Windows Rechnern
#include <windows.h> void gotoxy(short x, short y) { COORD pos; pos.X = x;pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos); }
mfg,
Helios84
-
Ich hab schon vor in "puren" DOS zu programmieren
Noch eine Frage,wo bekomm ich denn diesen Borland Compiler her, und ist dann da schon die conio.h dabei, oder kann ich mir die auch irgendwo downloaden und in meinen aktuellen IDE(Pelles C) Include Ordner reinkopieren?P.S: wäre es nicht einfach die BIOS Interrupte zu verwenden?... und wenn wie..
-
Woher? googel ist ein Begriff???
Hier ein Link zum download für den Compiler Turbo C++ 3.0 Compiler nach 5min Gebrauch der Seite google.de:
http://www.dei.isep.ipp.pt/~ana/Prog_II/turboc.htm
Obs funktioniert oder nicht bzw. Virenfrei ist, k.A.
wenn du es installiert hast einfach in der Hilfe nach "gotoxy" suchen
-
Mit Assembler kannst du den Interrupt 10H nutzen.
mov ah, 02H mov bh, x ;Bildschirmseite(0H bis 7H) mov dh, y ;Zeile(0H bis 24H) mov dl, z ;Spalte(0H bis 39H/79H) int 10H
So kannst du den Cursor auf eine beliebige Position bringen(Das H steht dafür, dass es Hexadezimalzahlen sind).
-
@GNUnix :
das funktioniert aber nur unter DOS oder?
ach ja und wie gib ich einen String aus, da printf irgendwie nicht funtioniert
-
Ich weiß es nicht genau, kann sein, dass WinXP die Aktion blockt. Ist schon vorher bei mir vorgekommen, dass WinXP ein anderes BIOS-Interrupt(1AH,also nicht das, das ich dir gegeben habe) blockt. Um einen Text auszugeben kannst du auch Assembler nutzen:
;Datensegement mein_Text DB "Mein Text$" ;Codesegement mov ax, @DATA mov ds, ax mov ah, 09H ;DOS-Interrupt int 21H ;für Textausgabe
oder auch C++:
#include <iostream> using namespace std; cout << "Mein Text";
bzw.
#include <iostream> std::cout << "Mein Text";
Die Dateiendung muss aber dafür cpp lauten nicht c, sonst funktioniert's nicht.
-
#include <windows.h> void gotoxy(short x, short y) { COORD pos; pos.X = x;pos.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos); } mfg, Helios84
Hi. Die Funktion klappt einwandfrei, aber ich verstehe nicht was sie im einzelnen macht. Kannst du dazu vielleicht was sagen
-
Hey,
Hi. Die Funktion klappt einwandfrei, aber ich verstehe nicht was sie im einzelnen macht. Kannst du dazu vielleicht was sagen
Gerne würde ich sie dir erklären, wobei es sinnvoller wäre, wenn du dir die Informationen selber holst, so ist der Lerneffekt viel höher. Guck einfach mal in die MSDN, und suche dort nach den Funktionsnamen, die in dem Code sind, z.b 'SetConsoleCursorPosition' etc. Dort findest du eine detallierte Beschreibung davon, und kannst dir so letztendlich vorarbeiten, bis du den Code verstehst. So mache ich es (und alle anderen) auch so
-
Wenn diese Funktion funktioniert, programmierst du übrigens nicht in der DOS-Box sondern in der Win32-Konsole!
Sie ist im Prinzip nur ein Wrapper für die Win32-API-Funktion SetConsoleCursorPosition(). Genauere Details gibts - wie bereits erwähnt - in der MSDN.
MfG SideWinder