Dim 下一頁 As mshtml.HTMLAnchorElement = Nothing
For Each objElement As mshtml.HTMLAnchorElement In frm1.contentWindow.document.getElementsByTagName("A")
If objElement.innerText IsNot Nothing AndAlso objElement.innerText.Trim() = "下一頁 ▼" Then
下一頁 = objElement
瀏覽內頁(下一頁)
Exit For
End If
Next
createps 發表在 痞客邦 留言(0) 人氣(350)
泛型
減少"型別轉換的時間"大大增加程式效能
種類1:
createps 發表在 痞客邦 留言(0) 人氣(1,098)
介面使用
當你有一個副專案要用到主專案裡面的類別的函式或其他時,可以使用介面:
以下的範例要在其他專案存取和改變主專案的TextBox1的Text值.要的注意的是:兩個專案都要用參考"介面專案"
主專案,宣告要讓介面存取的值函式:==========================
using 介面_命名空間;
using 實作_命名空間;
namespace 測試
{
public partial class Form1 : Form , 介面
createps 發表在 痞客邦 留言(0) 人氣(614)
著色器(Shader):
Shader可以直接在GPU上執行的指令集,依據功能的不同,可以劃分成處理3D頂點資料的Vertex Shader和處理螢幕像點資料的Pixel Shader。
對XNA程式來說,Shader是一個小程式,用來撰寫繪圖3D物件所產生的效果,Shader指令經過編譯之後,直接載入到顯示卡上的GPU來執行。
而GPU實際可以執行的其實是類似組合語言這種低階的Shader指令,而有些Shader是用較為高階的語言寫成,類似C語言的語法來撰寫(例如DirectX支援的HLSL或是Open GL支援的GLSL),這類的Shader需要DirectX先編譯成低階的Shader指令,然後再交由GPU執行。而XNA程式就是使用HLSL來撰寫遊戲效果。
Shader歷史:
微軟在DirectX7發表的新技術「硬體轉換與投影」(Hardware transform and lighting),這個技術主要是將頂點轉換和燈光的計算將原本CPU執行的工作轉交給GPU來執行,DirectX7的API將一些複雜的狀態,像是燈光、紋理等,都運用在一個Draw函數裡。
當硬體貼圖和打光被廣泛的運用在個人電腦上的時候,卻也產生了一個缺點,這些燈光的運算和顯示畫面早已經做好在GPU的硬體上了,以致他們顯現的東西都很相近,雖然提升整體的品質,但卻沒有新的東西可以展現。
DirectX8是微軟第一個提供的可程式化的Shader,這意味著程式設計師可以為自己的程式撰寫一個屬於自己的Shader程式,但由於早期Shader程式都是用一些組合語言來撰寫的,因此較不方便,所以後來微軟就發表了HLSL新的語言,主要是運用類似C的語法來撰寫程式,而不需要去運用到較低階的語言。
雖然還有其他用來撰寫shader的高階語言,像是OpenGL使用的GLSL (Open GL Shading Language) 或NVidia使用的 Cg 語言等這些都是,但HLSL只能在XNA或是DirectX使用。
XNA的Shader:
XNA提供了Effect這個類別來處理大部分繪圖著色相關的工作,裡面有提供簡單的Effect類別:BasicEffect。
使用時必須注意到如果是使用XNA內建的BasicEffect來繪製模型的話,就無需將此三個矩陣變數相乘,只要分別指定到BasicEffect遺傳下來的物件其中的World、View、Projection成員變數即可,它的Shader檔會自動將此三個矩陣變數相乘,也因此當我們要自己撰寫Shader檔案的話,我們就必須在shader(.fx)檔案裡適時將此三個由程式傳過來的三個矩陣做相乘的動作才可以。
createps 發表在 痞客邦 留言(0) 人氣(1,620)
C# 程式所在地 根目錄
string 根目錄 = Environment.CurrentDirectory + "\\";
createps 發表在 痞客邦 留言(0) 人氣(644)
以前我都沒想過可以用 Regular Expressions 驗證複雜格式的密碼,原來可以用 Regular Expression 中的群組建構式達成這個目的,例如說密碼的條件是這樣:
至少有一個數字
至少有一個小寫英文字母
至少有一個大寫英文字母
字串長度在 6 ~ 30 個字母之間
那麼你的 Regular Expression 可以長這樣:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,30}$
在這段 Regular Expression 的語法中值得注意的就是 (?=.*\d) 這段語法,這段於法又稱做「右合樣 (Positive Lookahead)」,右合樣(或左合樣)語法所佔用的寬度為 0,也就是說這段語法本真不會佔用比對的字元,僅僅只是 Regular Expression 中的一種「判斷式」而已,右合樣 (Positive Lookahead)會判斷右邊緊接著的字元是否符合比對條件,如果符合條件才會繼續比對下去。
所以剛剛這段於法的解釋大致可以這樣說明:
(?=.*\d) 與 (?=.*[a-z]) 與 (?=.*[A-Z]) 寬度都會是零,所以整個字串比對會以 .{6,30} 為主,但比對之前會分別比對 (?=.*\d) 與 (?=.*[a-z]) 與 (?=.*[A-Z]) 這三個判斷式,都判斷成功才會進行 .{6,30} 的比對。所以 (?=.*\d) 的 .*\d 就是說右邊的文字中一定要出現一個數字符號,(?=.*[a-z]) 的 .*[a-z] 就是說右邊的文字中一定要出現一個小寫字母,(?=.*[A-Z]) 的 .*[A-Z] 就是說右邊的文字中一定要出現一個大小字母,最後才會比對 .{6,30} 也就是說比對字串的長度必須在 6 ~ 30 個字的任意字元。
如果你的條件修改成:
至少有一個數字
至少有一個大寫或小寫英文字母
至少有一個特殊符號
字串長度在 6 ~ 30 個字母之間
那麼你的 Regular Expression 可以長這樣(以 C# 作範例):
Regex regex = new Regex(@"^(?=.*\d)(?=.*[a-zA-Z])(?=.*\W).{6,30}$");
這樣一來你知道如何融會貫通了嗎?^_^
createps 發表在 痞客邦 留言(0) 人氣(885)
同步發表於Google Blogger
C# 除法顯示小數點
decimal result = 100 / 1000; // result = 0;
需要保留小數點,可以如下
decimal result = 100m / 1000;
m代表decimal.
如果是變量要如何處理呢?這是需要用到Math.Round()
int x= 120;
int y= 100000;
decimal result = (decimal)x / y; // (decimal)x/ y 表示把 x 轉換成decimal再做除法運算,int 除 int 是會丟失小數點的。
不過這樣的小數點後面的數太多了,需要處理下,這時候需要Math.Round()
decimal result = Math.Round((decimal)x/ y,2);
後面的2表示保留小數點後2位小數.這樣ok啦:)
createps 發表在 痞客邦 留言(0) 人氣(22,935)

update:
最近發現了一招新的方法,可以把專案裡的全部檔案都替換掉,而且不用改到專案的任何資料。
"就是直接把新的檔案覆蓋到專案對應的資料夾裡面的檔案",這樣就不用改專案的資料,就直接換新的,不過要注意的事,如果有新的檔案,還是要乖乖的把檔案拉到專案裡面。
createps 發表在 痞客邦 留言(0) 人氣(3,069)
技巧 用RAR自解壓縮
1.壓縮檔名稱,改自己要的。注意要加副檔名.exe喔
2.在壓縮選項那裡把"建立自我解壓縮檔"打勾。
createps 發表在 痞客邦 留言(0) 人氣(6,842)
田老師的笑話
有一個國中老師姓田,大家都叫他田老師
有一個他講了一句話被告姓騷擾,
你知道他說了什麼嗎
原來他講了:
"來田老師這裡一下..."
createps 發表在 痞客邦 留言(0) 人氣(509)