Also ich habe folgendes:
Delphi-Quellcode:
TSpeak =
class(TObject)
private
procedure waveInProc(SomeWaveIn: HWaveIn; uMsg: UINT; dwInstance: DWORD; dwParam1, dwParam2: DWORD);
stdcall;
public
WaveIn: hWaveIn;
constructor create;
destructor free;
end;
//ganz normale klasse halt
var
Speak1: TSpeak;
implementation
{$R *.dfm}
//normal stuff
constructor TSpeak.create;
var header: TWaveFormatEx;
begin
inherited;
WaveIn := 0;
with header
do
begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 1;
nSamplesPerSec := 11050;
wBitsPerSample := 8;
nBlockAlign := 1;
nAvgBytesPerSec := 11050;
cbSize := 0;
end;
WaveInOpen(@WaveIn, WAVE_MAPPER, @header, DWORD(@Tspeak.WaveInProc), 1234567, CALLBACK_FUNCTION);
// hier sind dann noch andere "befehle" .. die werden allerdings aufgrund einer exception nicht ausgeführt :( .. und sind somit für mein problem uninterresant
end;
procedure TSpeak.waveInProc(SomeWaveIn: HWaveIn; uMsg: UINT; dwInstance: DWORD; dwParam1, dwParam2: DWORD);
stdcall;
begin
// bisher ne leer procedure .. nur für den compiler
end;
//destructor auch uninterresant
wenn ich nun Speak1 := TSpeak.create; aufrufe bekomm ich eine
exception in der form: "
Access violation at address 00138000. Write of address 00000001"
In einem andere project wo ich mit CALLBACK_WINDOW anstelle von CALLBACK_FUNCTION arbeite tritt diese
exception nicht auf .. daher liegt der Verdacht nahe das es an WaveInOpen liegt
hilfe :/
bye frank
[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]