Einzelnen Beitrag anzeigen

red

Registriert seit: 29. Jun 2003
3 Beiträge
 
Delphi 6 Enterprise
 
#1

WaveInOpen - CALLBACK_FUNCTION - Problem

  Alt 9. Jul 2003, 12:49
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]
  Mit Zitat antworten Zitat