Wieso geht das nicht??



  • Hallo!
    Ich hab im Internet ein Code gefunden, der aber nicht funktioniert.
    Er lautet:

    #include <stdio.h>
    #include <DOS.h>
    #include <conio.h>
    int main (void)
    {
    // Anfangston zum Test
    sound(1000);delay(1000);nosound();
    while(!kbhit())
    {
    sound(400);
    delay(200);
    sound(800);
    delay(200);
    sound(1600);
    delay(600);
    }
    nosound ();
    return 0;
    }

    Die Meldungen die kommen sagen,dass "sound, delay und nosound" nichtdeklarierter Bezeichner wären. Die sollen aber in der dos.h bezeichnet seien.
    Kann sein, dass das schon älter ist (der code). Kann es sein, dass sich die dos.h verändert hat??

    Vielen Dank!!!!!
    mfg martin

    PS: Der Code steht auf http://kaluza.physik.uni-konstanz.de/a/c/c.htm



  • hallöle,

    also ich hab zwar noch nicht so lange mit dem msvc++ zu tun, aber soviel ich weiss, gibts die funktionen da nicht mehr.(wenn du msvc++ benutzt 🙂 )



  • Sind alles 16bit-Funktionen. Schau mal in der FAQ unter "Warte-&Pause-Funktion" und unter "Töne & Musik" dort findest du die äquivalenten 32bit-Funktionen.

    MfG SideWinder



  • Danke erstmal!
    Also Fehler hab ich da laut Copiler (Microsoft Visual C++ 6.0) nicht mehr, aber die exe die dann ensteht macht nix und verschwindet sofort wieder. Liegt das daran, dass ich mit Win98 arbeite?Sowas stand in der Rihtunh ja in der Faq. Aber dann müsste das Prog doch wenigstens ne Sekunde bleiben, ich hab da ja Sleep.

    Der Text sieht jetzt so aus, viellecht sind da ja andere Fehler...

    #include <dos.h>
    #include <iostream.h>
    #include <windows.h>

    void sound ( unsigned int frequency );

    void sound ( unsigned int frequency )

    {
    sound (100);
    Sleep (1000);
    sound (1000);
    Sleep (1000);
    sound (500);
    }

    void nosound ();

    int main ()
    {
    void sound ( unsigned int frequency );

    void nosound ();

    return 0;
    }

    Danke!

    mfg martin



  • hi

    du hast ja eine selbstgeschriebene sound funktion, die aber nix macht..

    sound funzt zum beispiel mit dem djgpp .. der hat diese schöne funktion noch drin..

    da kannst du zum bleistift mit folgenden frequenzen arbeiten

    enum REINWIESCHNEE{c=264, d=297, e=330, f=352, g=396, a=440, h=495 , c1 =528};

    und komponieren.. mit delay gibts dann pausen..

    aber eben nicht mit dem studio... denke keine chance..



  • Windows ist doch viel interessanter:
    BOOL Beep(DWORD frequenz, DWORD dauer);
    spricht den Speaker an, jedoch nur unter NT.
    Unter Win95 werden die Werte ignoriert.
    Dafür:
    mit Soundkarte 'default sound event', ohne 'standard system beep'.
    Unter CE nicht supported 😃
    Unter ME, XP ... hm, sollte ich updaten? *gnarf*



  • Ähm, also das Letzte hat mich "etwas" verwirrt. Gibt es ünerhaupt eine Möglichkeite mit meinem Compiler für ein Konsolenprogramm was unter Win98 laufen soll Töne zu kriegen??
    Wenn ja bitte mit kurzer Erklärung, weil ich mit dem was mit beep in der FAQ steht irgendwie Probleme habe, ich war froh also bei der void sound keine fehler mehr waren.

    mfg martin



  • Sound ist absolut plattform + compilerspezifisch.
    Das wollte ich mit dem Posting zum Ausdruck bringen, das ist wirklich eine freie Übersetzung der Original-MSDN-Info (MSVC) zu dem Befehl.
    Also, Compiler und OS müssten wir schon wissen.



  • hi maddin

    wie gesagt: mit dem djgpp geht sound problemlos. ich vermute, daß auch ein paar borländer diese funktion noch haben.
    wie bitsy sagte, es ist compiler und betriebssystemabhängig.

    ich habe unter win98 mit dem studio absolute probleme mit dem Beep aus der windows.h. funzt nicht. liegt ev an meiner karte..

    also rate ich dir: möchtes du schöne konsolenspiele machen a la "lerry" im kleinen mit musik.. nutze entsprechende compiler, wie den djgpp.

    klar kann man sich das studio zurechtbiegen. aber der djgpp bietet den vorteil, das gotoxy und die farben in seiner conio.h gleich mit drin zu haben und zum einsatz bringen zu können, ohne sich der "wilden" konsolenapi stellen zu müssen ... *g*



  • Schau mal in der FAQ! Dort findest du neben der Funktion Beep() auch die Funktion Sleep() die beide beim MSVC funzen.

    Konsolen-API == SEHR_GUT - nur für die leute die es noch nicht wissen ;).

    MfG SideWinder



  • Hallo!
    Also Sleep klappt ja problemlos, nur bei beep kommen immer fehler, die bei void sound nicht kamen, in der Faq hab ich ja sofort geguckt.
    Mein Os war übrigens Win98 und als Compiler habe ich DEV c++ 4, Microsoft Visual c++ 6 und Borland c++ für Kids;-).
    Djgpp hab ich auch noch gerade runtergeladen. Ich hab aber mal überlegt, wenn in der conio beim djgpp das drin ist, kann ich die dann einfach mit der aus einem anderen Compiler tauschen und dann die Befehle beim Microsoft Compiler nehmen???
    mfg martin



  • Original erstellt von SideWinder:
    **

    Konsolen-API == SEHR_GUT - nur für die leute die es noch nicht wissen ;).

    MfG SideWinder**

    wie langweilig .... 😉



  • Original erstellt von Maddin1985:
    Hallo!
    Djgpp hab ich auch noch gerade runtergeladen. Ich hab aber mal überlegt, wenn in der conio beim djgpp das drin ist, kann ich die dann einfach mit der aus einem anderen Compiler tauschen und dann die Befehle beim Microsoft Compiler nehmen???
    mfg martin

    nein!

    geht nicht, weil hinter den headern noch eine menge steckt.. finger weg von compilerinnereien.. wenn man nicht weiß was man tut..

    @SideWinder

    unter meinem win98 funktioniert aber die apifunktion Beep nicht.. so ist das nunmal ...

    ps:

    @Maddin1985
    hast du Beep so geschrieben wie im faq und die windows.h includiert? fehler darf es nämlich nicht geben !

    [ Dieser Beitrag wurde am 13.10.2002 um 16:26 Uhr von elise editiert. ]



  • Ich denke schon. Aber ich weiß ja gar nicht, wie ich da die Freuqenz übermitteln soll.

    So sieht das dann bei mir aus:

    #include <windows.h>

    BOOL Beep ( DWORD dwFreq , DWORD dwDuration );

    BOOL Beep ( DWORD dwFreq , DWORD dwDuration )

    {

    //Hier weiß ich nicht, wie ich die Höhe und Frequenz üpbergebe!
    }

    int main ()
    {

    BOOL Beep ( DWORD dwFreq , DWORD dwDuration );

    return 0;
    }

    Aber wenn ich das da oben richtig verstanden habe, funktioniert die Funktion bei Win98 nicht. Wenn das so ist, werd ich wohl aufgeben müssen.
    Vielen Dank dann bis hier!!

    mfg martin



  • nein nein nein

    du sollst aber erstmal lernen, wie man funktionen verwendet!!!!!!!!

    einfach nur Beep(256, 50);
    oder sonstige argumente.. eine funktion aus der windows api musst du aufrufen, nicht neu deklarieren...

    und das es bei mir nicht funzt, liegt wohl eher an meiner karte..

    also: lerne erstmal c++ !



  • Mein Gott, is ja gut, ich "programmiere" halt nocht nicht so lange und die Funktionen, die ich gemacht habe waren halt nie in einer Header drin und da musste ich das halt so machen! Wenn ich noch nie gehört habe, dass man das dann so macht, konnte ich das leider nicht wissen!
    Zumindest klappt es jetzt, danke!



  • dringend ein tutorial oder ein buch organisieren.. nicht böse gemeint.. aber wenn du weiterkommen willst, arbeite mal eins durch



  • Bin ja nicht ganz blöd, hab ein Buch (angefangen) und 2 Tutorials durch, aber von solchen Funktionsaufrufen war da nie die Rede...


Anmelden zum Antworten