يصف المثال الموجود في هذه المقالة كيفية إنشاء ملفات wav في دلفي. شاركها مع الجميع لتكون مرجعا لك. التفاصيل هي كما يلي:
هنا تستخدم دلفي وظيفة waveIn... لإنشاء ملفات wav
الكود المحدد هو كما يلي:
// استخدم النافذة لقبول الرسائل من جهاز الصوت: واجهة الوحدة Unit1 تستخدم Windows، الرسائل، SysUtils، Variants، Classes، Graphics، Controls، Forms، Dialogs، StdCtrls type TForm1 = class(TForm) Button1: TButton2; : TButton؛ Button3: TButton؛ الإجراء FormCreate(Sender: TObject); Button2Click(Sender: TObject); الإجراء Button3Click(Sender: TObject); WndProc(var m: TMessage end; var Form1: TForm1; يستخدم MMSystem; whOut: TWaveHdr; buf1,buf2,SaveBuf: TBytes; الإجراء TForm1.FormCreate(Sender: TObject); begin Button1.Caption := 'Start التسجيل'; // بدء إجراء التسجيل TForm1.Button1Click(Sender: TObject); fmt.wFormatTag := WAVE_FORMAT_PCM; إيزي := 0; SaveBuf := nil; {مسح المحتوى المسجل} if waveInOpen(@hWaveIn, WAVE_MAPPER, @fmt, Handle, 0, CALLBACK_WINDOW) = 0 ثم ابدأ SetLength(buf1, 1024*8); SetLength(buf2, 1024*8) ; .lpData := PAnsiChar(buf1); whIn1.dwBufferLength := Length(buf1); whIn1.dwBytesRecorded := 0; whIn1.dwFlags := 0; whIn1.lpNext := nil; 0; whIn2.lpData := PAnsiChar(buf2); whIn2.dwBufferLength := Length(buf2); whIn2.dwBytesRecorded := 0; whIn2.dwFlags := 0; whIn2.reserved := 0; WaveInPreadheader (Hwavein ، @whin1 ، twavehdr) ؛ ); waveInStart(hWaveIn); end; // إيقاف إجراء التسجيل TForm1.Button2Click(Sender: TObject); (TWaveHdr)); waveInClose(hWaveIn); // تشغيل إجراء التسجيل TForm1.Button3Click(Sender: TObject); begin whOut.lpData := PAnsiChar(SaveBuf); .dwUser := 0; whOut.dwLoops := 1; whOut.lpNext := nil whOut.reserved := 0; waveOutWrite(hWaveOut, @whOut, SizeOf(TWaveHdr)); end; الإجراء TForm1.WndProc(var m: TMessage); var ordLen: Integer; : ; {تحمل هذه الرسالة مقبض الجهاز فقط} MM_WIM_DATA: البدء {تحمل هذه الرسالة مقبض الجهاز ومؤشر WaveHdr (LParam)} {احفظ البيانات المسجلة} ordLen := Length(SaveBuf); SaveBuf)+ordLen)، PWaveHdr(m.LParam).lpData, PWaveHdr(m.LParam).dwBytesRecorded); {متابعة التسجيل} waveInAddBuffer(hWaveIn, PWaveHdr(m.LParam), SizeOf(TWaveHdr)); {تحمل هذه الرسالة مقبض الجهاز فقط} MM_WOM_CLOSE: ; {تحمل هذه الرسالة مقبض الجهاز فقط} MM_WOM_DONE: begin {تحمل هذه الرسالة مقبض الجهاز ومؤشر WaveHdr (LParam)} waveOutUnprepareHeader(hWaveOut, PWaveHdr(m.LParam), SizeOf(TWaveHdr)); نهاية؛ نهاية.
آمل أن تكون هذه المقالة مفيدة لبرمجة دلفي للجميع.