發表文章

目前顯示的是 11月, 2007的文章

運算子的優先順序

一般我們在撰寫程式時常常會用到運算子,比如"="、"AND"、"ANDALSO"等等;有時候不小心常常會在這部分發生一些錯誤,所以不知道是不行的,比如今天撰寫程式時就發生一個錯誤,像下面這樣 If MyByteArray(8) And &HF = 0 Then ... Else ... End If 這段是把我接收到的byte陣列中的一個抓出來,然後取低位元組來用(也就是bit0~bit3),判斷是不是0,是的話要做特殊的處理,結果執行時發現永遠不會成立,為什麼呢?查了MSDN之後原來"="運算子的優先權高於AND運算子,所以會先處理 &HF = 0 的部分結果當然是傳回0,之後是 MyByteArray(8) And 0 結果也會是0,再來就輪到IF了,IF 0會判定為False,所以我程式的動作就會異常了..T.T 解決的方式是 If (MyByteArray(8) And &HF) = 0 Then ... Else ... End If 所以還是要養成好習慣,該有括號的地方不要偷懶啊.. 相關參考 Visual Basic 中的運算子優先順序

Visual Studio 2008

Visual Studio 2008 英文版本已經發行了 資料來源: http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=2432939&SiteID=14 Express Edition http://www.microsoft.com/express/ . Net Framework 3.5 http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=en 相關參考資源可以到資料來源那邊看看

SNTP Sample for Windows CE

在Windows CE的平台上如果要做SNTP自動校時的功能我們應該要如何實做呢?下面這邊有些相關資料可以參考 SNTP Client in C# RFC 2030 下面的是參考上面所提的C#範例修改過來的(開發平台是VS2003在CE4.2上面),省略了很多部分,有興趣的可以參考看看 ''共用模組(設定系統時間的API) _ Public Structure SYSTEMTIME Public year As Short Public month As Short Public dayOfWeek As Short Public day As Short Public hour As Short Public minute As Short Public second As Short Public milliseconds As Short End Structure 'SYSTEMTIME _ Public Function SetLocalTime(ByRef time As SYSTEMTIME) As Boolean End Function _ Public Function SetSystemTime(ByRef time As SYSTEMTIME) As Boolean End Function ''主程式Form1,上面有TextBox1(用來顯示訊息),Button(名稱為btnSyncTime), ''TextBox(名稱為txtServerName,用來放校時主機的IP位址) ''傳送給校時主機用 Dim btySend(47) As Byte ''接收資料用 Dim btyRecv(47) As Byte Private Sub btnSyncTime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSyncTime.Click

How Do I..

最近MSDN上面推出了 MSDN 教學短片 ,是個不錯的學習資源,在美國的MSDN上今天也看到了 How Do I? 的教學短片,各位鄉親有空也可以前往觀賞一下;比如說下面這個看過覺得還不錯 Creating Animated Buttons in Blend 是教你如何用Blend做一個button,並且在mouseover、mouseleave的時候去做相關動作,雖然是說英文,不過看著他操作相信也會有不錯的學習成果的。

如何列舉Access資料庫中的結構資訊

參考資料 OleDbConnection.GetOleDbSchemaTable 方法 Dim CN As OleDb.OleDbConnection Dim DA As OleDb.OleDbDataAdapter Dim DT As DataTable Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click CN = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\XXXXX.mdb;Persist Security Info=True") CN.Open() DT = CN.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _ New Object() {Nothing, Nothing, Nothing, "TABLE"}) DisplayData(DT) End Sub Private Sub DisplayData(ByVal table As DataTable) For Each row As DataRow In table.Rows For Each col As DataColumn In table.Columns Debug.Print("{0} = {1}", col.ColumnName, row(col)) Next Debug.Print("============================") Next End Sub

如何取得資料庫中自動編號欄位下一筆的值

這個方式是在MSDN論壇上面看到的(原文作者是chhuang 大大),有需要的朋友可以參考看看 資料來源: 請問一下mssql 的IDENTITY 要怎樣知道next value 使用方式 SELECT IDENT_CURRENT ('[Schema].[Table]') + IDENT_INCR ('[Schema].[Table]')

在裝置(mobile)的環境下如何取得執行檔位置呢

一般我們在做開發的時候要用到目前執行檔的位置通常會這樣用 Application.StartupPath 但是到了裝置上面沒有這個東西可以用,怎麼辦呢?我們可以利用下面的方式來取得 Public Function GetAppPath() As String Return System.IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString) End Function 如果你是用C#的話請用下面這個 MessageBox.Show(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase));

安裝部屬全攻略之─如何製作安裝檔

圖片
在我們寫完了漂漂的程式之後要交到使用者手上,總不能直接把xxxx.exe給使用者吧,這個時候我們需要製作安裝檔來交給使用者安裝,那怎麼做呢?嗯,下面我們用圖說方式來說明 加入安裝部屬專案 在VS IDE環境中的功能表選取[檔案]→[加入]→[新增專案],之後選擇[其他專案類型]→[安裝部屬專案],像下面的圖 加入專案輸出以及相關檔案 加入新的專案之後,如果依照預設值沒有變動東西的話,現在應該在[方案總管]中會看到新的專案"Setup1",在左邊我們會看到[目標電腦上的檔案系統],下面預設會有3個項目,[使用者的桌面]、[使用者的程式功能表]、[應用程式資料夾],這三個就是模擬成 目標電腦 上的相關位置,簡單的說如果安裝完後要再使用者的電腦桌面上加入捷徑之類的東西,那我們就要把東西放在[使用者的桌面];如果要在"開始功能表"裡面加入項目那就要在[使用者的程式功能表]裡面加入東西;[應用程式資料夾]就是對應到PROGRAMFILE,也就是程式安裝之後產生的資料夾嚕~ ;好,我們先來加入最重要的exe檔(執行檔)吧。 首先點一下左邊烈表的[應用程式資料夾],在右邊的空白處按下滑鼠右鍵會出現下圖的快顯功能表 點選[加入]→[專案輸出],之後會看到多了一個[主要輸出從XXXX(作用中)]的項目,這就是我們的執行檔嚕~畫面上因為我的測試專案很簡單,所以只有一個專案輸出,如果你的專案有參考其他的東西(比如說有用到ReportViewer)相關的dll也會自動的幫你加入;另外如果你的專案有用到其他檔案(比如說mdb檔)或是要建立資料夾的話在這邊也要一一手動加入喔~這個部分vs2005是不會幫你自動建立的喔。 設定相關屬性 執行檔作好了,再來,安裝的時候VS怎麼知道要幫我裝到甚麼目錄裡面呢?嗯,問的好!我們就來設定一下相關設定;首先我們先了解一下,VS2005是怎麼去抓相關設定的,照下面這張圖 我們可以看到[應用程式資料夾]它的DefaultLocation屬性是設定成下面這樣 [ProgramFilesFolder][Manufacturer]\[ProductName] 上面這3個項目就會對應到某一個屬性設定,首先[ProgramFilesFolder]就是對應到使用者電腦的"Program Files"資料夾了,而[M

移動無邊框的Form

這篇是回應網友問題便測試看看,語言是用C#,有興趣的朋友可以參考看看 using System.Runtime.InteropServices; namespace WindowsApplication1 { public partial class Form1 : Form { const int WM_SYSCOMMAND = 0x112; const int SC_MOVE = 0xF012; [DllImport("user32",EntryPoint="ReleaseCapture",CharSet=CharSet.Ansi)] private extern static int ReleaseCapture (); [DllImport("user32",EntryPoint="SendMessageA",CharSet=CharSet.Ansi)] private extern static int SendMessage (IntPtr hwnd , int wMsg , int wParam, int lParam ) ; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void Form1_MouseDown(object sender, MouseEventArgs e) { int i ; i = ReleaseCapture(); i = SendMessage(this.Handle , WM_SYSCOMMAND, SC_MOVE, 0); } } }

Expression Design

先前我們有簡單的介紹過Blend的部分,Design是另外一項產品,現在有說明文件以及SP1可以下載喔,請參考下面相關資訊 資料來源: http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=2360110&SiteID=14 Design SP1 http://www.microsoft.com/downloads/thankyou.aspx?familyId=937adf32-0fea-4bb7-b727-cbfbdf3fe032&displayLang=zh-tw Microsoft Expression Design 使用者指南 http://www.microsoft.com/downloads/details.aspx?FamilyID=6956d2b5-b070-42a3-bd68-665a8c865216&DisplayLang=zh-tw

如何讓智慧型裝置發出聲音

感覺上這個問題詢問的頻率還滿高的,在PDA上面我們怎麼利用程式讓它發出聲音(播放wav檔)呢?這裡我們用呼叫API的方式來做,請參考下面程式碼 Imports System.Runtime.InteropServices Public Class Form1 Public Const SND_FILENAME = &H20000 Public Const SND_SYNC = &H0 ''宣告方式 _ Public Shared Function PlaySound(ByVal lpszName As String, ByVal hModule As Integer, ByVal dwFlags As Integer) As Integer End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PlaySound("\windows\Alarm2.wav", 0, 0) End Sub End Class

書籍推薦-.Net Framework應用程式開發基礎

圖片
這本書看了之後覺得真的不錯,在對於.net framework部分能有更進一步的了解;其中有說明.net framework基礎的部分,像是比如說什麼是實值型別,什麼是參考型別;也有說明到集合、泛型運用的部分,有興趣的朋友可以到書店翻翻。 而書名中的"基礎"這可能會讓人覺得好像是很入門的東西,但其實不是喔~書中介紹的是.net framework中較常會使用的類別庫還有一些對.net framework該去了解的部分,所以如果您是剛剛要開始接觸的應該會覺得比較難懂一些喔~ 附上相關網址參考 Microsoft .NET framework 2.0: 應用程式開發基礎

如何將Base64字串資料轉回圖形

這也是一個MemoryStream的應用之一,不囉嗦,我們直接來瞧瞧程式碼吧~ Dim Str As String Str = _ "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8" & _ "YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA" & _ "CxMBAJqcGAAAA3VJREFUOE+lU/9P1HUYf+7gjvt87vP17jzsiOsqw7DpKbO7GczU2SGrucpSWc5go8Gw" & _ "kmE7aGUM5YfAyqhNiRBcWsrS4Dg1mBbZBAszqwV6kJeYfcOYcR73Acbx6s1Rf0HP9tp7772f5/W897xe" & _ "jw4A/a/gnT4SHMuJVI9uxeO1NXZnVobAm0hRVFJUBtt8Um12MvEcLcx5/umlvqqdKSkGUq1y4p1451oi" & _ "aTH5Cg42a9NA8PNQWLJnLhB4YyJBtVnJYFlE9qyXci9ejkM /gosWFFWaeL0pKoKUbIjN8W7sbnh91tA" & _ "nBHMxvvHBgY5NcMlSSKZJZksDxSt+aRnKnrjJhD6ZRptPdNwel4oF0RBR3Jm4dbWc8CVGwzXgYHhGQz9" & _ "Aezcd6k/2bbczi+p8u5r/+vv736eQaBXw0fdMQT7gIqmWzBZM7NJEHjb6k01n7Z0A8d7ptB+fgKBrzSc" & _ "/gEoeWNgsKJpZLTzUhxNXRpqjsawo2UaRe9EkPHgxlZRMFlIkSUyGpPlrCfqzviPALs/nsSeNg31HRr2" & _ "d8XxZnAKJe+NY+WrEaS

利用wininet.dll來做FTP的功能

要怎麼利用wininet.dll來做FTP相關的功能呢?下面相關部分可以參考看看,這邊主要是利用呼叫Win32API來做相關功能而.net framework中也有 FTPClient相關的東西可以用,FTPClient的部分就請自行查詢MSDN嚕~之後有時間再來整理 ,[2008.4.16編輯]查詢MSDN後發現名稱不是FTPClient(奇怪,之前怎麼一直記得有這個..),請參考下面相關資料 想問一些ftp client的 program FTP 用戶端技術範例 。 首先有些參考資料可以看看 FILE TRANSFER PROTOCOL (FTP) RFC959 SAMPLE: 在 Visual Basic 與 SimpleFtp 使用 WinInet FTP API Windows Internet Services (WinInet) WinInet Functions Calling WinINet Functions Asynchronously 下面是參考上面所提修改而來的code Imports System.Runtime.InteropServices Public Class cFTP ' Internet Session Handle (InternetOpen) Private _hInternet As Integer ' Internet Service Handle (InternetConnect) Private _hConnect As Integer Private _ServerName As String = "" Private _UserName As String = "anonymous" Private _Password As String = "" ''儲存是否需要密碼驗證的狀態 Private _IsNeedPassword As Boolean = True ''儲存是否需要via Proxy Private _IsNeedProxy As Boolean = False ''儲存傳輸模式