Wave 檔案的前 12 個位元組可以這樣描述:TRiff = record ckId : DWORD; {'RIFF'} ckSize : DWORD; {檔案大小, 不包括前 8 個位元組} fccType : DWORD; {'WAVE'}end;我們讀出檔案的前 12 個位元組進行判斷, 就基本可以確認它是不是 Wave 檔案.uses MMSystem, IOUtils; {這裡準備用 IOUtils.TFile.OpenRead 方便地建立檔案流}procedure
最近突然感覺 Delphi 的動態數組非常好用, 善用它可以省略很多 GetMem、ReallocMem; 並且它是被自動維護的.動態陣列變數 arr 本身就是指標, 不能再用 @arr 擷取;但要擷取某個元素位置的指標, 應該是 @arr[x]; 但隨著數組的再分配, 這個地址是變化的.//動態數組地址測試var i: Integer; arr: TBytes; p: PByte;begin SetLength(arr, 5); for i := 0 to 4 do arr[i] :
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); end;var Form1:
mmio 系列函數用於 Wave 等多媒體檔案的 I/O 操作, 相關函數有:mmioOpenmmioClosemmioReadmmioWritemmioFlushmmioSeekmmioRenamemmioGetInfommioSetInfommioCreateChunkmmioAscendmmioDescendmmioAdvancemmioSetBuffermmioStringToFOURCCmmioSendMessagemmioInstallIOProcmmio 系列函數比一般的 I/O
使用視窗接受音訊裝置發出的訊息:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure
這種轉換一般用於網頁地址; 我不知道 Delphi 是不是有現成的函數, 用到了就寫了一個.//函數:function ToUTF8Encode(str: string): string;var b: Byte;begin for b in BytesOf(UTF8Encode(str)) do Result := Format('%s%%%.2x', [Result, b]);end;//測試:var str: string;begin str := '萬一'; str :=
有兩個相關的結構體: TMMIOInfo、TMMCKInfo.TMMIOInfo 是多媒體檔案開啟後的狀態資訊, mmioOpen 函數的第二個參數就是這個結構的指標.現在先用到了 TMMCKInfo, 這是檔案內部 "塊" 的資訊, 構成如下:TMMCKInfo = record ckid: FOURCC; {塊標識} cksize: DWORD; {塊大小} fccType: FOURCC; {格式類型標識} dwDataOffset: DWORD;
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure FormCreate(Sender:
本例測試:代碼檔案:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender:
裝載格式資訊的結構有:TWaveFormat = packed record wFormatTag: Word; nChannels: Word; nSamplesPerSec: DWORD; nAvgBytesPerSec: DWORD; nBlockAlign: Word;end;TPCMWaveFormat = record wf: TWaveFormat; wBitsPerSample: Word;end;TWaveFormatEx = packed record
同上例類似, 通過 'http://clients1.google.cn/complete/search?&q=' + "關鍵字" 可以擷取 Google 的關鍵字搜尋排名.我用 Delphi 為關鍵字得到的結果是:window.google.ac.h( ["Delphi",[ ["delphi 教程", "375,000 結果", "0"], ["delphi盒子", "74,900 結果", "1"], ["delphi 下載", "1,580,000
讀取函數及測試代碼:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end;var Form1:
調用 Google 翻譯的地址格式:http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + 原始文本 + "&langpair=" + 原語言 + "%7C" + 目標語言返回的資料格式如下, 可以用 responseData.translatedText 簡單擷取:{ "responseData" : {"translatedText" : "返回的文本"},
偶然從 SysUtils 裡發現了幾個路徑相關的函數, 以前沒見過, 可能是 2010 新增的:GetLocaleDirectory();GetLocaleFile();LocaleDirectoryExists();LocaleFileExists();應用測試:uses IOUtils;procedure TForm1.FormCreate(Sender: TObject);var p,f: string; b: Boolean;begin {設定與擷取當前路徑}
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end;var Form1: TForm1;implementation{$R *.dfm}uses MMSystem;//chan:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton;
TMediaPlayer 錄音是基於一個已存在的 wav 檔案, 上次建立空白 wav 的函數可派上用場了.TMediaPlayer 的功能是基於 MCI 的, 都是該淘汰的東西了, 只是簡單瞭解下.接下來還要學慣用 waveIn...系列函數錄音、用 DirectSound 錄音.unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
最近準備學習 DirectSound、DirectMusic、DirectShow, 但剛一接觸就碰到了關於 Wave 檔案的諸多問題, 只好先回頭學學 Wave 檔案.Wave 檔案的基礎知識經常見到這樣的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo : 每秒鐘有 44100 次採樣, 採樣資料用 16 位(2位元組)記錄, 雙聲道(立體聲);22050HZ 8bit mono : 每秒鐘有 2205
下面是使用低級音頻函數播放 wav 的兩個方法, 對這個感興趣的人恐怕很少, 免注釋了.使用視窗接受音訊輸出裝置的訊息:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) ListBox1: TListBox; ListBox2: TListBox; Button1: TButton; Button2: TButton; procedure