Toon posts:

[C]Escape code werkt niet onder Windows XP

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het is een beetje twijfelachtig of mijn topic nu hier moet of onder Windows OS...als het verkeerd is, excuses dan.

Ik ben bezig met een boek over C. In dat boek staat er een voorbeeld van hoe je een cirkel op je scherm kan laten afdrukken door gebruik te maken van \033[X;YH. (waarbij X;Y de coördinaten zijn uiteraard).
Als ik mijn programma nu laat compileren gaat alles vlot, geen errors of zo. Ik ga daarna via Start -> Run -> cmd naar een DOS-venster en voer mijn exe-programma uit. Maar blijkbaar interpreteert DOS de escape-code niet correct want ipv mijn cursor te verplaatsen vervangt hij \033 gewoon door een pijl '<-'.

Ik heb hier al op GoT gezocht en op Google en het in mijn CONFIG.NT al ansi.sys toegevoegd en gereboot maar dat deed de truc niet. Ik las ergens anders dan weer dat er blijkbaar iets verandert was aan de escape-code of zo en dat het met C onmogelijk zou zijn dat nog aan de praat te krijgen in Windows XP...(vond ik wat dubieus)

Wie kan me op weg zetten naar een werkende escape code en bijhorend programma?
(Ik gebruik trouwens Visual Studio.NET 2003, Win-32 Console app en ingesteld om als C te compilen)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:44

Creepy

Tactical Espionage Splatterer

Je bent bezig met ANSI codes, dus je zult ANSI ondersteuning voor de command prompt moeten zoeken. Eenmalig laden van ansi.sys is blijkbaar niet de oplossing.

Bekijk http://www.windowsnetwork...terpreterAnsiSupport.html eens :)

[ Voor 12% gewijzigd door Creepy op 18-12-2004 11:58 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Creepy schreef op zaterdag 18 december 2004 @ 11:57:
Je bent bezig met ANSI codes, dus je zult ANSI ondersteuning voor de command prompt moeten zoeken. Eenmalig laden van ansi.sys is blijkbaar niet de oplossing.

Bekijk http://www.windowsnetwork...terpreterAnsiSupport.html eens :)
Ook dit doet het niet. Als ik de 'dosonly' laat staan wil hij mijn exe niet uitvoeren, doe ik het weg dan krijg ik terug de <-...

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:44

Creepy

Tactical Espionage Splatterer

"wil hij mijn exe niet uitvoeren"
Wat gaat er mis? krijg je een foutmelding?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Creepy schreef op zaterdag 18 december 2004 @ 12:35:
"wil hij mijn exe niet uitvoeren"
Wat gaat er mis? krijg je een foutmelding?
Nee, de exacte fout weet ik niet meer maar het komt er op neer dat hij vindt dat dat programma niet onder DOS kan draaien (het is dan ook als Win32 console gemaakt dus niet dos-only)

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 12:05

Tomatoman

Fulltime prutser

Verwijderd schreef op zaterdag 18 december 2004 @ 11:33:
Het is een beetje twijfelachtig of mijn topic nu hier moet of onder Windows OS...als het verkeerd is, excuses dan.
Je zit in het goede forum, want het is een programmeerprobleem :)
Als ik mijn programma nu laat compileren gaat alles vlot, geen errors of zo. Ik ga daarna via Start -> Run -> cmd naar een DOS-venster en voer mijn exe-programma uit. Maar blijkbaar interpreteert DOS de escape-code niet correct want ipv mijn cursor te verplaatsen vervangt hij \033 gewoon door een pijl '<-'.
Via Start -> Run -> cmd open je een command line onder Windows. Alles wat je vanaf de command line doet is gewoon 32-bits Windows, dat geldt voor zowel Windows 2000 als XP. Het is dus géén DOS-box!

Je gebruikt Visual Studio 2003, dus schrijf je een Windowsprogramma en geen MS-DOS-programma. Jouw programma is een console-applicatie. Die ziet er op het eerste gezicht net zo uit als de goede oude DOS-applicaties, maar het is toch echt een 32-bits Windowsapplicatie die niets met DOS van doen heeft.

Alle tekencommando's voor een console-applicatie zijn in C over de jaren zoveel mogelijk gelijk gehouden, zodat oude programma's nog netjes compileren. Het enige wat je moet veranderen is die escape-code, waarbij je moet kiezen voor een alternatief dat wel onder Windows werkt.

Er is trouwens niets 'minder' aan console-applicaties onder Windows. Het zijn volwaardige programma's, die precies werken zoals ieder ander Windowsprogramma. Het enige verschil is dat ze niet zo'n gelikte interface hebben. Zeker als je net leert programmeren zijn console-applicaties een uitstekend uitgangspunt. Gewoon mee doorgaan dus :)

[ Voor 9% gewijzigd door Tomatoman op 18-12-2004 14:13 ]

Een goede grap mag vrienden kosten.


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Op http://www.evergreen.edu/...otes/program/ansi_esc.htm staat: The Windows 2000/NT Command Interpreter, CMD.EXE, does not support ANSI.SYS. Use COMMAND.COM instead.. Misschien heb je daar wat aan?

Verwijderd

Topicstarter
Het gebruik van command.com lost het probleem ook niet op, dat had ik al gevonden in een ander topic. Bestaat er een gelijkaardige escape-code voor Windows dan? Als die bestaat vervang ik mijn code gewoon even om te zien dat mijn programma toch werkt en leg ik mij er bij neer dat de escape code onder XP niet meer naar behoren functioneert.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Het was sowieso al niet-portable, dus waarom nu niet de Windows API gebruiken?
SetConsoleCursorPosition( ) lijkt me precies wat je wil.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1