ton ausgabe



  • ich möchte gernen ein klavier programmieren!
    was kann ich machen, damit der ton so lange ausgegeben wird, solange die taste gedrückt wird?

    könnte mir bitte jemand sagen was hier falsch ist? 😕

    hier ist ein kleiner ausschnitt aus meinem programm:

    [code]
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    
    main()
    {
    	clrscr();
    
    	printf("Klavier");
    	printf("\n\nNote: c'");
    	printf("\nEnde = ESC");
    
    	while(1)
    	{
    		float f=0;
    
    			while(kbhit()) //solange die Taste gedrückt wird
    			{
    				char c=getch();	
    
    				switch(c)
    				{		
    					case 27: 
    						return 0;
    
    					case 'a':
    						f=261.626;  //Frequenz
    						break;
    
    					default:
    						printf("\n\nFalsche Eingabe");
    				}
    
    				if(f>0)
    				{
    					sound(f);  //Ausgabe
    				}
    
    			}
    
    			if(!kbhit())  //wenn nichts gedrückt wird
    			{
    				nosound(); //Ton: Ende
    			}
    	}
    }
    [/code]
    


  • Was klappt denn nicht? Ich habe natürlich keine Funktion "sound", aber solange du 'a' drückst, wird diese Funktion ausgeführt. Das klappt bei mir mit einer Testausgabe.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • es wird kein schöner ton ausgegeben. wenn ich die taste 'a' gedrückt halte, kommt immer nur ganz ganz kurz der ton, und gleich drauf wieder! i möchte aber das der ton solange bleibt, wie ich oben bin!

    mfg



  • Wie sieht denn die Funktion sound() aus?



  • bei der funktion sound() wird in den klammern die frequenz in hz eingegeben!!
    mit der funktion nosound(); ist der ton wieder aus!

    bsp:

    sound(440);
    sleep(5);
    nosound();
    

    mfg



  • Das konnte ich mir schon denken. Ich kenne diese Funktion aber nicht (und MS scheinbar auch nicht) und bin deshalb davon ausgegangen, dass es sich um deine eigene Funktion handelt. Falls das so ist, solltest du mal den Source posten.



  • nein, das ist nicht meins..
    mfg



  • nein, ..das ist nicht meine eigene funktion! diese funktion funktioniert nur mit dos! das weiß ich eh...

    mfg

    /*  dos.h
    
        Defines structs, unions, macros, and functions for dealing
        with MSDOS and the Intel iAPX86 microprocessor family.
    
        Copyright (c) 1987, 1992 by Borland International
        All Rights Reserved.
    */
    #ifndef __DOS_H
    #define __DOS_H
    
    #if !defined(___DEFS_H)
    #include <_defs.h>
    #endif
    
    #if !defined(_RTLDLL)
    extern  int _Cdecl  errno;
    extern  int _Cdecl  _doserrno;
    #else
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    int far * far _Cdecl __getErrno(void);
    int far * far _Cdecl __getDOSErrno(void);
    #ifdef __cplusplus
    }
    #endif
    
    #define errno (*__getErrno())
    #define _doserrno (*__getDOSErrno())
    #endif
    
    #ifndef __DLL__
    
    /* Variables */
    extern  int const _Cdecl _8087;
    extern  int       _Cdecl _argc;
    extern  char    **_Cdecl _argv;
    extern  char    **_Cdecl  environ;
    
    extern  unsigned      _Cdecl _psp;
    extern  unsigned      _Cdecl _heaplen;
    extern  unsigned char _Cdecl _osmajor;
    extern  unsigned char _Cdecl _osminor;
    extern  unsigned      _Cdecl _stklen;
    extern  unsigned      _Cdecl _fpstklen;
    extern  unsigned      _Cdecl _version;
    extern  unsigned      _Cdecl _osversion;      /* MSC name for _version */
    
    #endif  /* __DLL__*/
    
    #define FA_NORMAL   0x00        /* Normal file, no attributes */
    #define FA_RDONLY   0x01        /* Read only attribute */
    #define FA_HIDDEN   0x02        /* Hidden file */
    #define FA_SYSTEM   0x04        /* System file */
    #define FA_LABEL    0x08        /* Volume label */
    #define FA_DIREC    0x10        /* Directory */
    #define FA_ARCH     0x20        /* Archive */
    
    /* MSC names for file attributes */
    
    #define _A_NORMAL   0x00        /* Normal file, no attributes */
    #define _A_RDONLY   0x01        /* Read only attribute */
    #define _A_HIDDEN   0x02        /* Hidden file */
    #define _A_SYSTEM   0x04        /* System file */
    #define _A_VOLID    0x08        /* Volume label */
    #define _A_SUBDIR   0x10        /* Directory */
    #define _A_ARCH     0x20        /* Archive */
    
    #define NFDS    20          /* Maximum number of fds */
    
    struct  fcb {
        char    fcb_drive;      /* 0 = default, 1 = A, 2 = B */
        char    fcb_name[8];    /* File name */
        char    fcb_ext[3];     /* File extension */
        short   fcb_curblk;     /* Current block number */
        short   fcb_recsize;    /* Logical record size in bytes */
        long    fcb_filsize;    /* File size in bytes */
        short   fcb_date;       /* Date file was last written */
        char    fcb_resv[10];   /* Reserved for DOS */
        char    fcb_currec;     /* Current record in block */
        long    fcb_random;     /* Random record number */
    };
    
    struct  xfcb    {
        char        xfcb_flag;  /* Contains 0xff to indicate xfcb */
        char        xfcb_resv[5];/* Reserved for DOS */
        char        xfcb_attr;  /* Search attribute */
        struct  fcb xfcb_fcb;   /* The standard fcb */
    };
    
    struct  COUNTRY {
        int co_date;
        char    co_curr[5];
        char    co_thsep[2];
        char    co_desep[2];
        char    co_dtsep[2];
        char    co_tmsep[2];
        char    co_currstyle;
        char    co_digits;
        char    co_time;
        long    co_case;
        char    co_dasep[2];
        char    co_fill[10];
    };
    
    #if defined(__MSC) && !defined(__cplusplus)
    struct  DOSERROR {
            int     exterror;
            char    class;
            char    action;
            char    locus;
    };
    #else
    struct  DOSERROR {
            int     de_exterror;
            char    de_class;
            char    de_action;
            char    de_locus;
    };
    #endif  /* __MSC and not C++ */
    
    struct  dfree   {
        unsigned df_avail;
        unsigned df_total;
        unsigned df_bsec;
        unsigned df_sclus;
    };
    
    struct diskfree_t {
        unsigned total_clusters;
        unsigned avail_clusters;
        unsigned sectors_per_cluster;
        unsigned bytes_per_sector;
    };
    
    struct  fatinfo {
        char     fi_sclus;
        char     fi_fatid;
        unsigned fi_nclus;
        int      fi_bysec;
    };
    
    struct  devhdr  {
        long        dh_next;        /* Next device pointer */
        short       dh_attr;        /* Attributes */
        unsigned short  dh_strat;   /* Driver strategy routine */
        unsigned short  dh_inter;   /* Driver interrupt routine */
        char        dh_name[8];     /* Device name */
    };
    
    struct  time    {
        unsigned char   ti_min;     /* Minutes */
        unsigned char   ti_hour;    /* Hours */
        unsigned char   ti_hund;    /* Hundredths of seconds */
        unsigned char   ti_sec;     /* Seconds */
    };
    
    struct dostime_t {
        unsigned char hour;         /* Hours */
        unsigned char minute;       /* Minutes */
        unsigned char second;       /* Seconds */
        unsigned char hsecond;      /* Hundredths of seconds */
    };
    
    struct  date    {
        int     da_year;        /* Year - 1980 */
        char        da_day;     /* Day of the month */
        char        da_mon;     /* Month (1 = Jan) */
    };
    
    struct dosdate_t {
        unsigned char day;      /* 1-31 */
        unsigned char month;    /* 1-12 */
        unsigned int  year;     /* 1980 - 2099 */
        unsigned char dayofweek;/* 0 - 6 (0=Sunday) */
    };
    
    #ifndef _REG_DEFS
    #define _REG_DEFS
    
    struct WORDREGS {
        unsigned int    ax, bx, cx, dx, si, di, cflag, flags;
    };
    
    struct BYTEREGS {
        unsigned char   al, ah, bl, bh, cl, ch, dl, dh;
    };
    
    union   REGS    {
        struct  WORDREGS x;
        struct  BYTEREGS h;
    };
    
    struct  SREGS   {
        unsigned int    es;
        unsigned int    cs;
        unsigned int    ss;
        unsigned int    ds;
    };
    
    struct  REGPACK {
        unsigned    r_ax, r_bx, r_cx, r_dx;
        unsigned    r_bp, r_si, r_di, r_ds, r_es, r_flags;
    };
    
    #endif  /* _REG_DEFS */
    
    typedef struct {
        char    ds_drive;          /* do not change    */
        char    ds_pattern [13];   /*  these fields,       */
        char    ds_reserved [7];   /*   Microsoft reserved */
        char    ds_attrib;
        short   ds_time;
        short   ds_date;
        long    ds_size;
        char    ds_nameZ [13];     /* result of the search, asciiz */
    }   dosSearchInfo;  /* used with DOS functions 4E, 4F   */
    
    #ifndef _FFBLK_DEF
    #define _FFBLK_DEF
    struct  ffblk   {
        char        ff_reserved[21];
        char        ff_attrib;
        unsigned    ff_ftime;
        unsigned    ff_fdate;
        long        ff_fsize;
        char        ff_name[13];
    };
    #endif  /* _FFBLK_DEF */
    
    /* The MSC find_t structure corresponds exactly to the ffblk structure */
    struct find_t {
        char     reserved[21];      /* Microsoft reserved - do not change */
        char     attrib;            /* attribute byte for matched file */
        unsigned wr_time;           /* time of last write to file */
        unsigned wr_date;           /* date of last write to file */
        long     size;              /* size of file */
        char     name[13];          /* asciiz name of matched file */
    };
    
    #ifdef __MSC
    #define _find_t find_t
    #endif
    
    /* axret values for _hardresume() */
    
    #define _HARDERR_IGNORE 0   /* ignore error */
    #define _HARDERR_RETRY  1   /* retry the operation */
    #define _HARDERR_ABORT  2   /* abort program */
    #define _HARDERR_FAIL   3   /* fail the operation */
    
    #define SEEK_CUR    1
    #define SEEK_END    2
    #define SEEK_SET    0
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #if !defined( _Windows )
    int         _Cdecl absread( int __drive, int __nsects, long __lsect,
                                void _FAR *__buffer );
    int         _Cdecl abswrite( int __drive, int __nsects, long __lsect,
                                 void _FAR *__buffer );
    int         _Cdecl allocmem( unsigned __size, unsigned _FAR *__segp );
    #endif
    
    int         _CType _FARFUNC bdos( int __dosfun, unsigned __dosdx, unsigned __dosal );
    int         _CType bdosptr( int __dosfun, void _FAR *__argument,
                    unsigned __dosal );
    struct COUNTRY _FAR *_Cdecl country( int __xcode, struct COUNTRY _FAR *__cp);
    void        _Cdecl ctrlbrk( int _Cdecl( *handler )( void ));
    
    #if !defined( _Windows )
    void        _CType delay( unsigned __milliseconds );
    #endif
    
    void        _Cdecl _FARFUNC disable( void );
    int         _Cdecl _FARFUNC dosexterr( struct DOSERROR _FAR *__eblkp );
    long        _Cdecl _FARFUNC dostounix( struct date _FAR *__d, struct time _FAR *__t );
    
    unsigned    _Cdecl _dos_allocmem( unsigned __size, unsigned _FAR *__segp );
    unsigned    _Cdecl _dos_close ( int __fd );
    unsigned    _Cdecl _dos_commit( int __fd );
    unsigned    _Cdecl _dos_creat( const char _FAR *__pathP, unsigned __attr,
                    int _FAR *__fd );
    unsigned    _Cdecl _dos_creatnew( const char _FAR *__pathP, unsigned __attr,
                       int _FAR *__fd );
    unsigned    _Cdecl _dos_findfirst( const char _FAR *__path,
                      unsigned __attrib,
                      struct find_t _FAR *__finfo );
    unsigned    _Cdecl _dos_findnext( struct find_t _FAR *__finfo );
    unsigned    _Cdecl _dos_freemem( unsigned __segx );
    void        _Cdecl _dos_getdate( struct dosdate_t _FAR *__datep );
    unsigned    _Cdecl _dos_getdiskfree( unsigned __drive,
                          struct diskfree_t _FAR *__dtable);
    void        _Cdecl _dos_getdrive( unsigned _FAR *__drive );
    unsigned    _Cdecl _dos_getfileattr( const char _FAR *__filename,
                          unsigned _FAR *__attrib );
    unsigned    _Cdecl _dos_getftime( int __fd, unsigned _FAR *__date,
                       unsigned _FAR *__time );
    void        _Cdecl _dos_gettime( struct dostime_t _FAR *__timep );
    void        _Cdecl _dos_keep(unsigned char __status, unsigned __size);
    unsigned    _Cdecl _dos_open( const char _FAR *__pathP, unsigned __oflag,
                       int _FAR *__fd );
    unsigned    _Cdecl _dos_read( int __fd, void far *__buf, unsigned __len,
                       unsigned _FAR *__nread );
    unsigned    _Cdecl _dos_setblock( unsigned __size, unsigned __segx,
                       unsigned _FAR *__maxp );
    unsigned    _Cdecl _dos_setdate( struct dosdate_t _FAR *__datep );
    void        _Cdecl _dos_setdrive( unsigned __drive, unsigned _FAR *__ndrives );
    unsigned    _Cdecl _dos_setfileattr( const char _FAR *__filename,
                          unsigned _FAR __attrib);
    unsigned    _Cdecl _dos_setftime( int __fd, unsigned __date, unsigned __time );
    unsigned    _Cdecl _dos_settime( struct dostime_t _FAR *__timep );
    unsigned    _Cdecl _dos_write( int __fd, const void far *__buf, unsigned __len,
                    unsigned _FAR *__nread );
    
    void        __emit__( unsigned char __byte, ...);
    void        _Cdecl _FARFUNC enable( void );
    
    #if !defined( _Windows )
    int         _Cdecl freemem( unsigned __segx );
    #endif
    
    int         _Cdecl getcbrk( void );
    void        _CType getdate( struct date _FAR *__datep );
    void        _Cdecl getdfree( unsigned char __drive,
                     struct dfree _FAR *__dtable );
    int         _Cdecl _getdrive( void );
    void        _Cdecl getfat( unsigned char __drive,
                   struct fatinfo _FAR *__dtable );
    void        _Cdecl getfatd( struct fatinfo _FAR *__dtable );
    unsigned    _Cdecl getpsp( void );
    int         _Cdecl getswitchar( void );
    void        _CType gettime( struct time _FAR *__timep );
    int         _Cdecl getverify( void );
    
    #if !defined( _Windows )
    #ifdef __cplusplus
    void        _Cdecl _harderr( void _Cdecl (far *__fptr)( unsigned __deverr,
                                 unsigned __doserr, unsigned far *__hdr) );
    #else
    void        _Cdecl _harderr( void _Cdecl (far *__fptr)( ) );
    #endif
    void        _Cdecl _hardresume( int __axret );
    void        _Cdecl _hardretn( int __retn );
    
    #ifdef __cplusplus
    void        _CType harderr( int _Cdecl( *__handler )( int __errval, int __ax,
                                int __bp, int __si) );
    #else
    void        _CType harderr( int _Cdecl( *__handler )( ) );
    #endif
    void        _CType hardresume( int __axret );
    void        _CType hardretn( int __retn );
    #endif
    
    #ifndef _PORT_DEFS
    unsigned        _Cdecl inport ( unsigned __portid );
    unsigned char   _Cdecl inportb( unsigned __portid );
    unsigned        _Cdecl inpw   ( unsigned __portid );
    int             _Cdecl inp    ( unsigned __portid );
    #endif
    
    int         _Cdecl int86( int __intno,
                              union REGS _FAR *__inregs,
                              union REGS _FAR *__outregs );
    int         _Cdecl int86x( int __intno,
                               union REGS _FAR *__inregs,
                               union REGS _FAR *__outregs,
                               struct SREGS _FAR *__segregs );
    int         _Cdecl intdos( union REGS _FAR *__inregs,
                               union REGS _FAR *__outregs );
    int         _Cdecl intdosx( union REGS _FAR *__inregs,
                                         union REGS _FAR *__outregs,
                                         struct SREGS _FAR *__segregs );
    void        _Cdecl intr( int __intno, struct REGPACK _FAR *__preg );
    
    #if !defined( _Windows )
    void        _Cdecl keep( unsigned char __status, unsigned __size );
    void        _Cdecl nosound( void );
    #endif
    
    #ifndef _PORT_DEFS
    void        _Cdecl outport ( unsigned __portid, unsigned __value );
    void        _Cdecl outportb( unsigned __portid, unsigned char __value );
    unsigned    _Cdecl outpw   ( unsigned __portid, unsigned __value );
    int         _Cdecl outp    ( unsigned __portid, int __value );
    #endif
    
    char _FAR * _Cdecl parsfnm( const char _FAR *__cmdline,
                           struct fcb _FAR *__fcb, int __opt );
    int         _Cdecl peek( unsigned __segment, unsigned __offset );
    char        _Cdecl peekb( unsigned __segment, unsigned __offset );
    void        _Cdecl poke( unsigned __segment, unsigned __offset, int __value);
    void        _Cdecl pokeb( unsigned __segment,
                              unsigned __offset, char __value );
    
    #if !defined( _Windows )
    int         _Cdecl randbrd( struct fcb _FAR *__fcb, int __rcnt );
    int         _Cdecl randbwr( struct fcb _FAR *__fcb, int __rcnt );
    #endif
    
    void        _Cdecl segread( struct SREGS _FAR *__segp );
    
    #if !defined( _Windows )
    int         _Cdecl setblock( unsigned __segx, unsigned __newsize );
    #endif
    
    int         _Cdecl setcbrk( int __cbrkvalue );
    void        _Cdecl setdate( struct date _FAR *__datep );
    void        _Cdecl setswitchar( char __ch );
    void        _Cdecl settime( struct time _FAR *__timep );
    void        _Cdecl setverify( int __value );
    
    #if !defined( _Windows )
    void        _Cdecl sleep( unsigned __seconds );
    void        _Cdecl sound( unsigned __frequency );
    #endif
    
    void        _Cdecl _FARFUNC unixtodos( long __time, struct date _FAR *__d,
                                  struct time _FAR *__t );
    int         _CType unlink( const char _FAR *__path );
    
        /* These are in-line functions.  These prototypes just clean up
           some syntax checks and code generation.
         */
    
    void        _Cdecl          __cli__( void );
    void        _Cdecl          __sti__( void );
    void        _Cdecl          __int__( int __interruptnum );
    
    #define disable( ) __emit__( (char )( 0xfa ) )
    #define _disable( ) __emit__( (char )( 0xfa ) ) /* MSC name */
    #define enable( )  __emit__( (char )( 0xfb ) )
    #define _enable( )  __emit__( (char )( 0xfb ) ) /* MSC name */
    
    #define geninterrupt( i ) __int__( i )      /* Interrupt instruction */
    
    #ifndef _PORT_DEFS
    #define _PORT_DEFS
    
    unsigned char   _Cdecl    __inportb__ ( unsigned __portid );
    unsigned        _Cdecl    __inportw__ ( unsigned __portid );
    unsigned char   _Cdecl    __outportb__( unsigned __portid, unsigned char __value );
    unsigned        _Cdecl    __outportw__( unsigned __portid, unsigned __value );
    
    #define inportb(__portid)           __inportb__(__portid)
    #define outportb(__portid, __value) ((void) __outportb__(__portid, __value))
    #define inport(__portid)            __inportw__(__portid)
    #define outport(__portid, __value)  ((void) __outportw__(__portid, __value))
    
    /* MSC-compatible macros for port I/O */
    #define inp(__portid)               __inportb__ (__portid)
    #define outp(__portid, __value)     __outportb__(__portid, (unsigned char)__value)
    #define inpw(__portid)              __inportw__ (__portid)
    #define outpw(__portid, __value)    __outportw__(__portid, __value)
    
    #endif  /* _PORT_DEFS */
    
    #if !__STDC__
    
    extern  unsigned    _Cdecl  _ovrbuffer;
    int cdecl far _OvrInitEms( unsigned __emsHandle, unsigned __emsFirst,
                               unsigned __emsPages );
    int cdecl far _OvrInitExt( unsigned long __extStart,
                               unsigned long __extLength );
    
    char far *cdecl getdta( void );
    void      cdecl setdta( char far *__dta );
    
    #define MK_FP( seg,ofs )( (void _seg * )( seg ) +( void near * )( ofs ))
    #define FP_SEG( fp )( (unsigned )( void _seg * )( void far * )( fp ))
    #define FP_OFF( fp )( (unsigned )( fp ))
    
    #ifdef __cplusplus
    void        _Cdecl _chain_intr ( void interrupt (far *__target)( ... ));
    void interrupt( far * _Cdecl _dos_getvect( unsigned __interruptno ))( ... );
    void interrupt( far * _CType getvect( int __interruptno ))( ... );
    void        _Cdecl _dos_setvect( unsigned __interruptno,
                                     void interrupt( far *__isr )( ... ));
    void        _CType setvect( int __interruptno,
                                void interrupt( far *__isr )( ... ));
    int  inline _Cdecl peek( unsigned __segment, unsigned __offset )
                      { return( *( (int  far* )MK_FP( __segment, __offset )) ); }
    char inline _Cdecl peekb( unsigned __segment, unsigned __offset )
                      { return( *( (char far* )MK_FP( __segment, __offset )) ); }
    void inline _Cdecl poke( unsigned __segment, unsigned __offset, int __value )
                   {( *( (int  far* )MK_FP( __segment, __offset )) = __value ); }
    void inline _Cdecl pokeb( unsigned __segment, unsigned __offset, char __value )
                   {( *( (char far* )MK_FP( __segment, __offset )) = __value ); }
    #else
    void        _Cdecl _chain_intr ( void interrupt (far *__target)( ));
    void interrupt( far * _Cdecl _dos_getvect( unsigned __interruptno ))( );
    void interrupt( far * _CType getvect( int __interruptno ))( );
    void        _Cdecl _dos_setvect( unsigned __interruptno,
                    void interrupt( far *__isr )( ));
    void        _CType setvect( int __interruptno,
                    void interrupt( far *__isr )( ) );
    #define peek( a,b )( *( (int  far* )MK_FP( (a ),( b )) ))
    #define peekb( a,b )( *( (char far* )MK_FP( (a ),( b )) ))
    #define poke( a,b,c )( *( (int  far* )MK_FP( (a ),( b )) ) =( int )( c ))
    #define pokeb( a,b,c )( *( (char far* )MK_FP( (a ),( b )) ) =( char )( c ))
    #endif  /* __cplusplus */
    
    #endif  /* !__STDC__ */
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif  /* __DOS_H */
    
    
    


  • Ich habe ein wenig gebraucht, um zu raffen, wo das Problem liegt. 🤡

    Probier das hier mal, sollte klappen (ungetestet). Du führst sound in jeder Iteration aus. Dabei startet sound die Tonausgabe und fährt fort, bis nosound ausgeführt wird. Es ist also immer nur ein Aufruf von sound nötig.

    Ich hoffe, ich konnte dir helfen. Auch wenn es ein bisschen gedauert hat...

    #include <stdio.h> 
    #include <conio.h> 
    #include <dos.h> 
    
    main() 
    {
        bool bSoundOn=false; 
        clrscr(); 
    
        printf("Klavier"); 
        printf("\n\nNote: c'"); 
        printf("\nEnde = ESC"); 
    
        while(1) 
        { 
            float f=0; 
    
                while(kbhit()) //solange die Taste gedrückt wird 
                { 
                    char c=getch();    
    
                    switch(c) 
                    {        
                        case 27: 
                            return 0; 
    
                        case 'a': 
                            f=261.626;  //Frequenz 
                            break; 
    
                        default: 
                            printf("\n\nFalsche Eingabe"); 
                    } 
    
                    if(f>0 && !bSoundOn) 
                    { 
                        sound(f);  //Ausgabe 
                        bSoundOn=true;
                    } 
    
                } 
    
                if(!kbhit())  //wenn nichts gedrückt wird 
                { 
                    nosound(); //Ton: Ende 
                    bSoundOn=false;
                } 
        } 
    }
    


  • da muss ich aber bool , true und false zuerst definieren oder?
    wenn ich das nicht definiere habe ich 6 fehler, wenn ich sie definiere geht es trotzdem nicht!
    welchen compiler verwendest du??
    mfg



  • stiffmaster11 schrieb:

    da muss ich aber bool , true und false zuerst definieren oder?
    wenn ich das nicht definiere habe ich 6 fehler, wenn ich sie definiere geht es trotzdem nicht!
    welchen compiler verwendest du??
    mfg

    Oh je...

    Ich benutze VS2005. Das kannst du übrigens auch kostenlos in der Express-Edition runterladen. Den Resourcen-Editor brauchst du für deine Konsolen-Apps sowieso nicht.

    Du musst BOOL (int), TRUE (1) und FALSE (0) definieren. Das sollte klappen. Wenn nicht, welche Fehlermeldung kommt denn dann?

    (hab jetzt Feierabend, Antowrt kann also ein wenig dauern)



  • das habe ich gemacht! funkt. aber trotzdem nicht!!

    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    
    #define false 0
    #define true  1
    
    #define bool int
    
    int main()
    {
        bool bSoundOn=false;
        clrscr();
    
        printf("Klavier");
        printf("\n\nNote: c'");
        printf("\nEnde = ESC");
    
        while(1)
        {
            float f=0;
    
                while(kbhit()) //solange die Taste gedrückt wird
                {
                    char c=getch();    
    
                    switch(c)
                    {        
                        case 27:
                            return 0;
    
                        case 'a':
                            f=261.626;  //Frequenz
                            break;
    
                        default:
                            printf("\n\nFalsche Eingabe");
                    }
    
                    if(f>0 && !bSoundOn)
                    {
                        sound(f);  //Ausgabe
                        bSoundOn=true;
                    }
    
                }
    
                if(!kbhit())  //wenn nichts gedrückt wird
                {
                    nosound(); //Ton: Ende
                    bSoundOn=false;
                }
        }
    }
    

    mfg



  • Wenn nicht, welche Fehlermeldung kommt denn dann?

    Antworte doch auch auf die Fragen, die man dir stellt.
    "funkt aber trotzdem nicht!!!" ist keine Fehlermeldung...



  • es kommt keine fehlermeldung wenn ich alles definiere so wie oben!!

    probier mal aus, dann wirst du erkennen das ken richtiger ton kommt!!

    mfg



  • Es sollte aber nun so sein, dass sound nur einmal ausgeführt wird und nosound erst, wenn du die Taste wieder loslässt. Ist das denn auch so? Hast du das mal überprüft (z.B. Testausgabe mit printf bei sound und nosound)?

    Welchen Compiler benutzt du überhaupt, dass du kein bool hast?

    Du solltest übrigens nicht bool, sondern besser BOOL definieren. bool ist ja eigentlich ein richtiger Datentyp, BOOL nur ein MS-define. Mach's am besten so:

    #ifndef BOOL
      define BOOL int
    #endif
    #ifndef TRUE
      #define TRUE 1
    #endif
    #ifndef FALSE
      #define FALSE 0
    #endif
    


  • auch wenn ich es so mache wie du mir vorgeschlagen hast funktioniert es nicht!

    für was ist das eigentlich gut wenn ich bool definiere!! warum kann ich nicht gleich int nehmen?

    ich verwende borland c (auch für c++)!
    mfg



  • stiffmaster11 schrieb:

    auch wenn ich es so mache wie du mir vorgeschlagen hast funktioniert es nicht!

    für was ist das eigentlich gut wenn ich bool definiere!! warum kann ich nicht gleich int nehmen?

    ich verwende borland c (auch für c++)!
    mfg

    Du hast doch damit angefangen, bool zu definieren. Natürlich kannst du auch ein int und 0 und 1 nehmen. Das wird aber an deinem Programm nix ändern.

    Bitte befolge meinen Rat aus dem letzten Post und überprüfe dein Programm (Testausgaben)! Mit "funzt nicht" kann keiner was anfangen.

    Programmierst du denn für Windows? Dann wäre VS Express vielleicht eine gute Alternative.



  • ich habe das mit borland c für dos programmiert!! das exe-file kann ich dann mit windows öffnen!!
    der debbuger und der linker melden keine fehler! das problem ist glaub ich das:
    wenn man einen text schreibe und auf a drauf bleibe wird auch nicht sofort immer ein a geschriben! der computer macht automatisch einen kleinen zeitraum wo nichts geschriben wird! also: auch wenn ich ganze zeit auf a drauf bleibe macht der pc kurze abständ wo er nichts schreibt und da wird ja aus der sicht des pc nichts gedrückt! ich glaube der fehler liegt darin!! ich habe die wiederholrate aufs höchste gestellt.. es kommen aber immer noch sehr kurze töne!
    vil. darf man da nicht kbhit() verwenden!
    mfg



  • oder..??
    kann mir bitte jemand helfen??? 😕 😕 😕 😕
    mfg


Anmelden zum Antworten