ton ausgabe
-
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??
mfgOh 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++)!
mfgDu 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
-
stiffmaster11 schrieb:
oder..??
kann mir bitte jemand helfen???
mfgSorry, ich hatte auf der Arbeit viel zu tun, das war wichtiger.
Vielleicht hilft dir das weiter:
Dazu müsstest du aber auf die WinAPI ausweichen (32-Bit-Konsolen-Anwendung). es spricht aber nix dagegen, da du dein Programm ja sowieso unter Windows startest.
-
habe nach geschaut, dort sind aber mehrere methoden aufgelistet!
welche soll ich verwenden und wie verwende ich diese dann??am besten wärs wenn ihr bitte gleich den ganzen code reinstellen könnt!!
bitte!danke im vorhinein..
mfg
-
Hallo!
Mein Piano hab ich folgendermassen gemacht.
Das Problem ist das Beep() nicht asynchron ist und man als Spieldauer nicht "bis auf weiters" eingeben kann, aber vielleicht hast du ja eine Idee, wie man das lösen könnte...//* sound.h *// #ifndef ____SOUND_H____ #define ____SOUND_H____ #include <windows.h> namespace snd { BOOL t; BOOL f=TRUE; DWORD fr; DWORD WINAPI BeepThread(LPVOID _d) { if(f) { t=TRUE; f=FALSE; } while(!t); while(t) { Beep(*((DWORD *)_d),128); } t=TRUE; return 0; } void beep(unsigned long _f) { fr=_f; t=FALSE; CreateThread(0,0,BeepThread,&fr,0,NULL); } } #endif
#include <conio.h> #include "sound.h" int main(void) { while(1) { double f; switch(getch()) { case 'a' : f=440.00; break; case 's' : f=493.87; break; case 'd' : f=523.25; break; case 'f' : f=587.34; break; case 'g' : f=659.25; break; case 'h' : f=689.50; break; case 'j' : f=784.00; break; case 'k' : f=880.00; break; case 0x1b : // 0x1b -> Escape return 0; default : continue; } snd::beep((unsigned long)f); } }
-
wie ist beep() eigentlich definiert!?? welche werte stehen zwischen den klammern??
mfg
-
Schaust du hier!
-
Übrigens:
Vielleicht weiss ja hier jemand, wie man einen bestimmten Thread einfach so abschiessen kann, das würde das Problem, dass Beep nicht asynchron ist, lösen...Ich denke mit TerminateThread müsste es wohl funzen, aber ich krieg's halt irgendwie nicht klar.
-
pharmacy;
-
könnte bitte jemand den gesamten code reinstellen..??
bitte!!!!
mfg