var currentBuffer : Pchar; BufferCounter : integer; function TForm1.essai():integer; var c1,c2 : integer; begin c1 := 0; c2 := 0; CurrentBuffer := StrAlloc(LONGUEUR + 1); CurrentBuffer := 'Quelque chose qui ne dépasse pas LONGUEUR en taille'; c1 := StrToInt(currentBuffer[BufferCounter]); c2 := StrToInt(currentBuffer[BufferCounter + 1]); BufferCounter := BufferCounter + 2; c1 := c1 + c2 shl 8; if(c1 > 32767) then c1 := c1 - 65536; result := c1; StrDispose(CurrentBuffer); end;
bufferSize := WaveHeader[1].dwBufferLength; hBuf := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, bufferSize); WaveHeader[1].lpData := GlobalLock(hBuf);
currentBuffer := (PWaveHdr(Msg.lParam)^.lpData)
hBuf := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, bufferSize); Ca ne serait pas plutôt "GMEM_MOVEABLE or GMEM_SHARE" ? Ca peut paraître peu intuitif mais le "and" ne veut pas dire que l'on veut que les deux flags soient respectés ... d'où l'erreur de VA peut-être ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionif Assigned(CurrentBuffer) then ...
if hBuf <> 0 then ...
for I := 0 to Length(CurrentBuffer) - 1 do // Traitement (faire Byte(CurrentBuffer[I]) pour obtenir le byte et pas le caractère).