repeat () until keypressed in C??

Von: , Frage gestellt am Do, 21. Okt 1999

Ich benötige mal wieder Eure Hilfe:

Ich möchte ja auf C++ umsteigen, doch leider bin ich noch zu sehr an Pascal gewöhnt. wie würde man folgende Passage übersetzen:

repeat
begin
{Programm}
end
until (keypressed);

weiterhin wäre folgender Pascal Befehl interessant:

delay (1000);

Danke für Eure Hilfe

4 Antworten zu dieser Frage

  1. Antwort von nach 3 Stunden hilfreich
    Re: repeat () until keypressed in C??

    Es gibt keine "repeat until" in C++ sondern
    " do while" also wo du repeat hast= do und wo du until hast=while versuch es. Keine "end oder begin in c++"
    do
    {program}
    while(keypressed)
    mike [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

    • Antwort von nach 14 Stunden hilfreich
      Re^2: repeat () until keypressed in C??

      Keine "end oder begin in c++"
      Die geschweiften Klammern entsprechen end und begin in C
      begin = {
      end = }

      mfg Peter

  2. Antwort von nach einem Tag hilfreich
    Re: repeat () until keypressed in C??

    Das Entscheidende ist ja wohl das "Keypressed" - in ereignisorientierter Programmierung gibt es so etwas nicht - eher ein Tastatur-Ereignis, das es dann auszuwerten gilt.

    Reinhard

    • Antwort von nach 2 Tagen hilfreich
      Re^2: repeat () until keypressed in C??

      Keypressed lässt sich aber problemlos reinprogrammieren (für DOS und DOS4GW).

      DOS:

      char KeyPressed()
      {
      char Temp=0;

      _asm
      {
      mov ah,1
      int 16h
      setnz al
      mov Temp,al
      }
      return Temp;
      }

      (Vielleicht nicht die eleganteste und schnellste Methode, aber funktioniert.

      DOS4GW:

      typedef _Packed struct
      {
      long EDI;
      long ESI;
      long EBP;
      long Reserved;
      long EBX;
      long EDX;
      long ECX;
      long EAX;
      short flags;
      short ES,DS,FS,GS,IP,CS,SP,SS;
      } RMRegs;

      char KeyPressed()
      {
      RMRegs RealModeRegs;
      short Temp=0;

      /* Prepare values for interrupt */
      RealModeRegs.EAX=0x100;
      // mov ah,1

      _asm
      {
      mov ax,300h
      mov bl,16h
      mov bh,0
      // flags, but they aren't used
      mov cx,0
      // number of words to copy from protected
      // mode to real mode stack ??
      lea edi,RealModeRegs
      int 31h
      //DPMI Interrupt
      jnc NoError
      mov Temp,0xff
      NoError:
      }
      if (Temp==0xff) return 0;

      Temp=RealModeRegs.flags;
      _asm
      {
      mov ax,Temp;
      push ax
      popf
      setnz al
      xor ah,ah
      mov Temp,ax
      }

      return ((char)Temp);
      }

      (Etwas länger und noch ein bisschen komplizierter)

      CFox

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!