Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mit Cursor zu bestimmter Stelle Springen C (https://www.delphipraxis.net/104061-mit-cursor-zu-bestimmter-stelle-springen-c.html)

ferby 26. Nov 2007 19:34


Mit Cursor zu bestimmter Stelle Springen C
 
Hallo,

ich bin am verzweifeln.

Ich will in C ein paar Zeilen Text schreiben,
mit printf() und dann mit den Cursor irgendwo hinspringen und dort
wieder etwas schreiben.

Hat wer eine Ahnung wie das geht?

Wie ich innerhalb einer Zeile Springe weiß ich, das geht über die Steuerzeichen von
printf. mit \r zb zum Anfang der Zeile.
Aber wie springe ich eine Zeile nach oben?

Muetze1 26. Nov 2007 20:50

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Die Ausgabe ist eine lineare Funktion und nicht reversible. Die normalen Steuerzeichen können von daher dort auch nichts mehr ausrichten. Einzige Möglichkeit ist, wenn die Ausgabekonsole o.ä. welche genutzt wird eine Terminal Emulation unterstützt. Diese Emulationen haben (meist über Escape Sequenzen) die Möglichkeit der erweiterten Steuerung. Aber wie gesagt, abhängig von der unterstützten Emulation (VT52, VT100, ANSI, etc)...

ferby 26. Nov 2007 20:54

Re: Mit Cursor zu bestimmter Stelle Springen C
 
phu, das klingt kompliziert^^

das einzige was mir noch einfällt ist einfach den bildschirm mit cls löschen und dann bin ich wieder am anfang der eingabe...

glaub werd das so irgendwie lösen wenn das anders nicht geht

grenzgaenger 26. Nov 2007 23:31

Re: Mit Cursor zu bestimmter Stelle Springen C
 
wie programmierst du denn... auf der console...?

Delphi-Quellcode:
#include <conio.h>

Nuclear-Ping 27. Nov 2007 00:20

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Schau mal nach Bei Google suchenC gotoxy.

ferby 27. Nov 2007 07:17

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Hallo,

ja ich programmiere in der Konsole.

gotoxy ist pascal.... ich kenne keinen Befehl für C der das selbe macht,
ünber Google finde ich auch nur Schrott :-(

ferby 27. Nov 2007 09:28

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Hello,

also ich habe jetzt was gefunden, und zwar gibt es in C
ansi control sequenzen

aber irgendwie funktioniert das nicht. mit

Delphi-Quellcode:
printf("\033[A");
sollte ich eine Zeile raufspringen, allerdings wird die ESC Sequenz nicht ausgeführt sondern
es wird <-[A ausgegeben :-(

weiß wer rat?

Torpedo 27. Nov 2007 09:56

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Bei mir funktionierts
http://www.tfh-berlin.de/~kempfer/skript_c/Kap07.html
Hier noch mehr: http://www.tfh-berlin.de/~kempfer/sk...apesequenzen.h

marabu 27. Nov 2007 11:11

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Hallo Ferdinand,

hast du den Treiber ANSI.SYS in der Datei %windir%\system32\config.nt geladen?

EDIT: Unabhängig vom ANSI-Treiber funktioniert die API Funktion SetConsoleCursorPosition() ...

Grüße vom marabu

Torpedo 27. Nov 2007 12:11

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Zitat:

Zitat von marabu
EDIT: Unabhängig vom ANSI-Treiber funktioniert die API Funktion SetConsoleCursorPosition()

Das funktioniert aber nur unter Windows. Wenn das Programm nur ein Windowsprogramm werden soll, dann geht das natürlich, aber man weiß nie, ob man es irgendwann nicht doch auf eine andere Plattform portieren möchte.

Muetze1 27. Nov 2007 12:32

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Dann halt die Terminal Emulation. ANSI etc hatte ich schon alles entsprechend genannt. Bei den Normungsinstituten sowie vielen anderen Websites findet man eine komplette Dokumentation.

Nuclear-Ping 27. Nov 2007 13:47

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Zitat:

Zitat von ferby
Hallo,

ja ich programmiere in der Konsole.

gotoxy ist pascal.... ich kenne keinen Befehl für C der das selbe macht,
ünber Google finde ich auch nur Schrott :-(

gotoxy ist sowohl C als auch Pascal. Auch wenn meine C-Zeiten schon "Jahrzehnte" zurückliegen, kann ich mich doch sehr daran erinnern, öfters mit gotoxy gearbeitet zu haben.
Code:
gotoxy

See also Example Portability

Syntax

#include <conio.h>

void gotoxy(int x, int y);

Description

Positions cursor in text window.

gotoxy moves the cursor to the given position in the current text window. If the coordinates are in any way invalid the call to gotoxy is ignored. An example of this is a call to gotoxy(40,30) when (35,25) is the bottom right position in the window. Neither argument to gotoxy can be zero.

Note: Do not use this function for Win32s or Win32 GUI applications.

Return Value  None.

Borland C++ 5.0 Programmer's Guide
--> http://www.cs.binghamton.edu/~steflik/cs240/conio.html

ferby 27. Nov 2007 15:00

Re: Mit Cursor zu bestimmter Stelle Springen C
 
hallo


gotoxy ist mir nur unter c++ bekannt, sicher das es das unter c auch gibt?
also conio.h hab ich eingebunden aber er kennt den befehlt trotzdem nicht



zu SetConsoleCursorPosition(); gibt es das unter c oder ist das auch c++,
welches header file muss ich dazu einbinden


thx 4 help

ferby 27. Nov 2007 15:46

Re: Mit Cursor zu bestimmter Stelle Springen C
 
JUHU,

geschafft :-)


Delphi-Quellcode:
#include <windows.h>

void gotoxy(short x, short y)
{
   HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
   COORD pos;
   pos.X=x-1;
   pos.Y=y-1;
   SetConsoleCursorPosition(hCon, pos);
}

Nuclear-Ping 27. Nov 2007 15:53

Re: Mit Cursor zu bestimmter Stelle Springen C
 
Also bei mir funzt das:

Code:
#include <stdio.h>
#include <windows.h>
#include <conio.h>

int main(int argc, char *argv[])
{
   int a;

         system ("cls");
         for (a = 0; a < 10; a++)
            printf ("-> %d\n", a);

         gotoxy (1,1);
         printf ("-- Test --\n");

         return 0;
}
Borland C++ 5.5.1 Compiler. Wie schon geschrieben, ich hab früher mit Turbo C rumgespielt und da gabs gotoxy auch schon.

ferby 27. Nov 2007 21:48

Re: Mit Cursor zu bestimmter Stelle Springen C
 
glaub das gibts nur untern borland glaub ich, zumindest waren fast alle google ergebnise die gotoxy dirket hatten von broland


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz