Das Programm startet und die texte_e werden erst nach Beendigung reingeschrieben im Editfenster. Eigentlich sollte der Text "starte..." erscheinen, dann soll die Aufnahme erfolgen usw.
Wie kann man das so proggen?
Gruss
Code: Alles auswählen
Global text_e.s
Enumeration
#Window_0
#Button_0
#Editor_0
#Font_0
EndEnumeration
Procedure SaveWave(NrSeconds , Outputfile$)
wf.WAVEFORMATEX
wf\wFormatTag = #WAVE_FORMAT_PCM
wf\nChannels = 2
wf\nSamplesPerSec = 44100
wf\wBitsPerSample = 16
wf\nAvgBytesPerSec = (wf\wBitsPerSample / 8) * wf\nChannels * wf\nSamplesPerSec
wf\nBlockAlign = (wf\wBitsPerSample / 8) * wf\nChannels
If waveInOpen_(@hwi , #WAVE_MAPPER , wf , 0 , 0 , #WAVE_FORMAT_DIRECT) = #MMSYSERR_NOERROR
wh.WAVEHDR
wh\lpData = AllocateMemory(wf\nAvgBytesPerSec * NrSeconds)
wh\dwBufferLength = MemorySize(wh\lpData)
wh\dwFlags = 0
If wh\lpData
If waveInPrepareHeader_(hwi , wh , SizeOf(WAVEHDR)) = #MMSYSERR_NOERROR
If waveInAddBuffer_(hwi , wh , SizeOf(WAVEHDR)) = #MMSYSERR_NOERROR
If waveInStart_(hwi) = #MMSYSERR_NOERROR
waveInStop_(hwi)
waveInUnprepareHeader_(hwi,wh,SizeOf(WAVEHDR))
If CreateFile(0,Outputfile$)
WriteData(0 , @"RIFF" , 4)
WriteLong(0 , 44 + wh\dwBytesRecorded)
WriteData(0 , @"WAVE" , 4)
WriteData(0 , @"fmt " , 4)
WriteLong(0 , 16)
WriteData(0 , wf , SizeOf(WAVEFORMATEX) - 2)
WriteData(0 , @"data" , 4)
WriteLong(0 , wh\dwBytesRecorded)
WriteData(0 , wh\lpData , wh\dwBytesRecorded)
CloseFile(0)
EndIf
EndIf
EndIf
EndIf
FreeMemory(wh\lpData)
EndIf
waveInClose_(hwi)
EndIf
EndProcedure
OpenWindow(#Window_0, 400, 150, 300,300, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
SetCurrentDirectory("data/")
ButtonGadget(#Button_0, 10,10, 80, 25, "Datei laden")
EditorGadget(#Editor_0, 10, 50, 200,200)
LoadFont(#Font_0, "Lucida Console", 9)
SetGadgetFont(#Editor_0, FontID(#Font_0))
Repeat
Event = WaitWindowEvent(1)
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #Button_0
text_e+"starte..."
SetGadgetText(#Editor_0, text_e)
SaveWave(10 , "Test.wav")
text_e+"fertig..."
SetGadgetText(#Editor_0, text_e)
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver