Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Создание пустого wav-файла

Советы » Аудио » Создание пустого wav-файла

Как мне создать пустой wav-файл? Это просто пустой двоичный файл?

The TMediaPlayer может открыть звуковой файл, если он содержит, по крайней мере, один байт данных. Я обнаружил это, когда с помощью данного компонента пытался создать и открыть звуковой файл, содержащий только заголовок звукового файла. The TMediaplayer не захотел этого делать.

Нижеприведенный код создаст звуковой файл размером 1 байт. Конечно это криво, но это работает. Вам необходимо лишь добавить MMSYSTEM ко всем модулям, использующим данную функцию.

function

CreateNewWave(NewFileName: string

): Boolean; var

DeviceID: Word; Return: LongInt; MciOpen: TMCI_Open_Parms; MciRecord: TMCI_Record_Parms; MciPlay: TMCI_Play_Parms; MciSave: TMCI_SaveParms; MCIResult: LongInt; Flags: Word; TempFileName: array

[0..255] of

char; begin

MediaPlayer.Close; StrPCopy(TempFileName, NewFileName); MciOpen.lpstrDeviceType := 'waveaudio'; MciOpen.lpstrElementName := ''; Flags := Mci_Open_Element or

Mci_Open_Type; MCIResult := MciSendCommand(0, MCI_OPEN, Flags, LongInt(@MciOpen)); DeviceID := MciOpen.wDeviceId; MciRecord.dwTo := 1; Flags := Mci_To or

Mci_Wait; MCIResult := MciSendCommand(DeviceID, Mci_Record, Flags, LongInt(@MciRecord)); mciPlay.dwFrom := 0; Flags := Mci_From or

Mci_Wait; MciSendCommand(DeviceId, Mci_Play, Flags, LongInt(@MciPlay)); mciSave.lpfileName := TempFilename; Flags := MCI_Save_File or

Mci_Wait; MCIResult := MciSendCommand(DeviceID, MCI_Save, Flags, LongInt(@MciSave)); Result := MciSendCommand(DeviceID, Mci_Close, 0, LongInt(nil

)) = 0; end

;

Как мне очистить содержимое Wav-файла? Просто заново создать пустой?

Вот небольшой компонент, позволяющий стирать любую часть wave-файла:

unit

Nickmp; interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, MMSystem; type

TNickMediaPlayer = class

(TMediaPlayer) private

{ Private declarations } protected

{ Protected declarations } public

{ Public declarations } function

DeleteWaveChunk(aFrom, aTo: LongInt): Longint; published

{ Published declarations } end

; procedure

Register

; implementation

procedure

Register

; begin

RegisterComponents('Samples', [TNickMediaPlayer]); end

; function

TNickMediaPlayer.DeleteWaveChunk(aFrom, aTo: LongInt): Longint; var

DeleteParms: TMCI_WAVE_DELETE_PARMS; Flags: LongInt; begin

Flags := 0; if

Wait then

Flags := mci_Wait; if

Notify then

Flags := Flags or

mci_Notify; DeleteParms.dwCallback := Handle; Flags := Flags or

mci_From; DeleteParms.dwFrom := aFrom; Flags := Flags or

mci_To; DeleteParms.dwTo := aTo; Result := mciSendCommand(DeviceID, mci_Delete, Flags, Longint(@DeleteParms)); end

; end

.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com