C# 開放原始碼資源網站
寫 C# 程式的朋友可以去挖寶學習
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | uses MMSystem; function GetMasterMute(Mixer: hMixerObj; var Control: TMixerControl): MMResult; // Returns True on success var Line: TMixerLine; Controls: TMixerLineControls; begin ZeroMemory(@Line, SizeOf(Line)); Line.cbStruct := SizeOf(Line); Line.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; Result := mixerGetLineInfo(Mixer, @Line, MIXER_GETLINEINFOF_COMPONENTTYPE); if Result = MMSYSERR_NOERROR then begin ZeroMemory(@Controls, SizeOf(Controls)); Controls.cbStruct := SizeOf(Controls); Controls.dwLineID := Line.dwLineID; Controls.cControls := 1; Controls.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE; Controls.cbmxctrl := SizeOf(Control); Controls.pamxctrl := @Control; Result := mixerGetLineControls(Mixer, @Controls, MIXER_GETLINECONTROLSF_ONEBYTYPE); end; end; procedure SetMasterMuteValue(Mixer: hMixerObj; Value: Boolean); var MasterMute: TMixerControl; Details: TMixerControlDetails; BoolDetails: TMixerControlDetailsBoolean; Code: MMResult; begin Code := GetMasterMute(0, MasterMute); if Code = MMSYSERR_NOERROR then begin with Details do begin cbStruct := SizeOf(Details); dwControlID := MasterMute.dwControlID; cChannels := 1; cMultipleItems := 0; cbDetails := SizeOf(BoolDetails); paDetails := @BoolDetails; end; LongBool(BoolDetails.fValue) := Value; Code := mixerSetControlDetails(0, @Details,MIXER_SETCONTROLDETAILSF_VALUE); end; if Code <> MMSYSERR_NOERROR then raise Exception.CreateFmt('SetMasterMuteValue failure, ' + 'multimedia system error #%d', [Code]); end; // Example: procedure TForm1.Button1Click(Sender: TObject); begin SetMasterMuteValue(0, CheckBox1.Checked); // Mixer device #0 mute on/off end; |
於 Delphi 7 的環境下的專案程式中的 TQuery 元件的 Fields Editor 中要增加欄位出現了下列錯誤訊息
Access violation at address 4085E2C4 in module ‘bdertl70.bpl’. Read of address 00000000.
增加一個新的 TQuery 元件要指定 DatabaseName 屬性也會出現同樣的錯誤
原本是很正常的專案不確定為何會這樣
不過新建一個專案做同樣的處理就不會有同樣錯誤
所以歸納為專案本身的環境問題
才想到前一段時間為了減少 IDE 介面 Palette 上的元件
就去將 Project Options 中將一些沒用到的 Packages 給關掉
不然設計時找元件要點來點去很麻煩
說不定就是元件之間的關連性所導致的問題
趕快把原本關掉的都給弄回來,果然錯誤訊息就不再出現了。
Java 環境下有一個 Log4J 的功能,在 Delphi 環境下也有人開發出類似的元件。可以參考下列兩個專案:
http://log4d.sourceforge.net/
http://sourceforge.net/projects/log4d/
http://log4delphi.sourceforge.net/
http://sourceforge.net/projects/log4delphi
提供下列工具程式
還有包含其他未列出的工具程式請參考官方網站