Avatar billede roymonz Nybegynder
02. juni 2004 - 22:14 Der er 24 kommentarer og
1 løsning

makøren & delay

Jeg har et spørgsmål om C

hvis jeg nu ønsker at den blinkende makør ikke skal kunne ses hvordan gør jeg så nemmest det?

altså hvis man laver en gotoxy(x,y); så vil markøren stå og blinke der. hvordan ændre jeg det? så den er på den position, men blinker ik.

og til sidst. hvis jeg vil lave en præsentation, og vil have det sådan at man kan trykke en tast for at fortsætte, eller man bare skal vente x antal sekunder før programmet selv går videre.

jeg forsøgte med delay(); er det forkert ?
Avatar billede roymonz Nybegynder
02. juni 2004 - 22:32 #2
ups.
på skolen bruger vi turbo c som vores compliler.
så det er vel til dos.
Avatar billede bertelbrander Novice
02. juni 2004 - 22:46 #3
Så skal du nok se på _setcursortype(_NORMALCURSOR/_NOCURSOR), kbhit() samt delay().

Jeg er ikke sikker på at setcursortype() findes på alle udgaver af TurboC, hvis du ikke har den laver vi en.
Avatar billede roymonz Nybegynder
02. juni 2004 - 22:53 #4
jeg kan på nuværende tidspunkt ikke lige svare på om det er nogle funktion jeg har i turboC da jeg stort set kun arbejder med det på skolen. men jeg er næsten sikker på at jeg ikke har en setcursortype.
men jeg vil da prøve den i morgen.
samt den der kbhit(); den er jeg heller ikke sikker på findes.

men delay virker
Avatar billede bertelbrander Novice
02. juni 2004 - 22:58 #5
TurboC 2.01 har kbhit() men ikke setcursortype().

BorlandC 3.1 har setcursortype().
Avatar billede roymonz Nybegynder
02. juni 2004 - 22:59 #6
den kbhit();
vil den ikke være det samme som en getch(); ?
Avatar billede bertelbrander Novice
02. juni 2004 - 23:13 #7
kbhit() checker kun om der er trykket på en tast og returnerer med det samme.
getch() venter på at der bliver trykket på en tast.

Så I kunne lave noget i stil med:
int main(void)
{
  int i;

  printf("Hit any key to continue");
  for(i = 0; i < 100 && !kbhit(); i++)
  {
    delay(100);
    printf(".");
  }

  return 0;
}
Avatar billede roymonz Nybegynder
02. juni 2004 - 23:23 #8
jeg vil sige hvis den der virker, så kunne jeg kysse dig :D
det ville være guld.
Avatar billede bertelbrander Novice
02. juni 2004 - 23:29 #9
Et sæt funktioner til at vise/fjerne cursoren:

void CursorOff(void)
{
  union REGS In, Out;
  In.h.ah = 1;
  In.h.ch = 0x20;
  In.h.cl = 0;

  int86(0x10, &In, &Out);
}

void CursorOn(void)
{
  union REGS In, Out;
  In.h.ah = 1;
  In.h.ch = 6;
  In.h.cl = 7;
  int86(0x10, &In, &Out);
}

Men prøv først med _setcursortype()
Avatar billede roymonz Nybegynder
02. juni 2004 - 23:30 #10
jeg prøver funktionerne i morgen og skriver lige hvordan det er gået.
Avatar billede roymonz Nybegynder
03. juni 2004 - 08:07 #11
den sidste du gav mig virkede ikke med bare copy paste. men turboC har den der

_setcursortype(_NORMALCURSOR/_NOCURSOR)

så jeg kan ikke være mere glad
Avatar billede roymonz Nybegynder
03. juni 2004 - 08:54 #12
okay den der kbhit(); virkede fint.
dog ikke lige helt som jeg havde planlagt.

vi søger en stump kode som
går videre efter et stykke tid hvor der ikke sker noget på tastaturet.
som går videre hvis man trykker en tast.
og som afslutter hvis man trykker esc.
Avatar billede bertelbrander Novice
03. juni 2004 - 19:31 #13
#include <conio.h>
#include <stdio.h>

int WaitLoop(void)
{
  int i;
  printf("Hit any key to continue");
  for(i = 0; i < 100 && !kbhit(); i++)
  {
    delay(100);
    printf(".");
  }
  if(kbhit())
    return getch();
  return 0;
}

int main(void)
{
  if(WaitLoop() == 27) /* 27 == ESC */
    printf("\nEsc hit\n");
  else
    printf("\nSome other key hit, or timeout\n");

  return 0;
}
Avatar billede roymonz Nybegynder
03. juni 2004 - 23:00 #14
jamen jeg kunne ikke være mere lykkelig.
det gjorde trickket. jeg takker mange gange
Avatar billede bertelbrander Novice
03. juni 2004 - 23:07 #15
Blot for at være helt sikker; du bruger ikke:
_setcursortype(_NORMALCURSOR/_NOCURSOR);

men:

_setcursortype(_NOCURSOR);
...
_setcursortype(_NORMALCURSOR);
Avatar billede roymonz Nybegynder
03. juni 2004 - 23:11 #16
hehe

jo jeg bruger _setcursortype(_nocursor);

&#9474;&#9553;  gotoxy(45,7);
&#9474;&#9553;  _setcursortype(_SOLIDCURSOR); /* ingen cursor */
&#9474;&#9553;
&#9474;&#9553;  for(k = 0; k <1 ; k--)
Avatar billede roymonz Nybegynder
03. juni 2004 - 23:12 #17
okay den ville ikke lige indsætte de tegn fra mit copy paste
Avatar billede roymonz Nybegynder
08. juni 2004 - 12:03 #18
jeg tænkte på om du ikke ville have dine points ?
så send mig et hurtigt svar.
Avatar billede bertelbrander Novice
08. juni 2004 - 21:30 #19
Jeg vil helst ikke have point.
Avatar billede roymonz Nybegynder
08. juni 2004 - 23:36 #20
okay. må jeg spørge hvorfor ikke ?
Avatar billede bertelbrander Novice
08. juni 2004 - 23:40 #21
Nej.
Avatar billede roymonz Nybegynder
08. juni 2004 - 23:41 #22
cool. men har jeg så mulighed for at "slippe spørgsmålet og points ikke går til nogen?
Avatar billede bertelbrander Novice
08. juni 2004 - 23:42 #23
Du laver selv et svar som du derpå accepterer.
Avatar billede roymonz Nybegynder
08. juni 2004 - 23:42 #24
kan man det ?
Avatar billede roymonz Nybegynder
08. juni 2004 - 23:43 #25
åbenbart ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester