發表文章

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

如何取得 struct size

struct MyStruct { ... }; 在 C++ 時代,我們可以用 sizeof(MyStruct) [StructLayout(LayoutKind.Sequential)] struct MyStruct { ... }; 在 C# 時代,我們必需宣告變數實體才能取得其大小 MyStruct myStruct = new MyStruct(); int iSize = Marshal.SizeOf(myStruct); 後來發現利用 typeof 運算子也可以達到相同的效果 int iSize = Marshal.SizeOf(typeof(MyStruct));

我的 P535 無線網路設定

最近手賤亂動 PDA 上的無線網路設定,結果造成無法連線,老是出現 " 無法取得伺服器指派的 IP 位址 " 的錯誤訊息,Google 後才發現是網路卡的問題。解法如下: 開始 | 設定 | 連線 | Wi-Fi 切到 "網路介面卡" 的頁面 我的網路卡連線到:預設的工作設定 點選介面卡以修改設定: Remote-NDIS 主機 點選 "編輯",選擇 "使用伺服器指定的 IP 位址" (DHCP) 做完以上設定應該就 OK 了 時好時壞,還是未解,哀 看來是公司無線 AP 的問題,P535 內建使用的無線網路介面卡應該是 " ASUS 802.11b+g Wireless Card " (不是 Remote-NDIS 主機),而使用 DHCP 取得的 ID 竟然是 fe80::218:f3ff:fee6 改用手動的方式,配一個無人使用的 IP 就正常了,唉! 目前看起來似乎有兩個問題 DHCP 取回的似乎是 IPv6 PDA 之前的 IP 似乎不會釋放

CString.Format 的怪問題

我的 ThermalTest 程式,在顯示 "已經過" 的時間時,會出現奇怪的問題,似乎所有的參數都往後移一位,原本顯示 "秒" 的變成 "分"、顯示 "分" 的變成 "小時",依此類推。 // TODO: Add your message handler code here and/or call default CTime tNow = CTime::GetCurrentTime(); CString str, strResult, strFile; // 經過時間 CTimeSpan tPeriod = tNow - m_tStart; strResult.Format("%04d/%02d/%02d %02d:%02d:%02d", tNow.GetYear(), tNow.GetMonth(), tNow.GetDay(), tNow.GetHour(), tNow.GetMinute(), tNow.GetSecond()); strFile = strResult; str.Format(" 已經過 %d 天 %02d:%02d:%02d\n", tPeriod.GetDays() , tPeriod.GetHours(), tPeriod.GetMinutes(), tPeriod.GetSeconds()); strResult += str; 後來發現是 GetDays( ) 造成的,它的傳回值是 LONGLONG,但是 Format 只用 %d,因此造成參數溢位往後推擠,只要將 %d 改成 %lld 就可以了。 參考: Size and Distance Specification 另發現我當時有另一種解法,但不知為何程式沒有 Release str = tPeriod.Format(_T(" 已經過 %D 天 %H:%M:%S\n")); 參考: CTimeSpan::Format

無線 AP 修復手札

圖片
公司的無線 AP 已經年老體衰,三不五時就會自動 Reset 成出廠設定,提供免費的 AP 給大家使用。所以我就記錄一下這次修復的步驟,下次碰到時,也可以依樣畫葫蘆。 首先執行 3Com 提供的 Gateway Discovery 程式,搜尋區域網路中的 AP (這個程式目前只提供 Windows XP 的版本,在 Windows 7 下無法執行) 首先選擇連接區域網路的設備