2012年12月26日 星期三

開啟windows 7 的tftp,telnet 用戶端與伺服器

1."開始"->"控制台"->"程式集"->"開啟或關閉Windows功能"後, 勾選"Telnet用戶端", 'Telnet伺服器', 'TFTP用戶端'
2.開啟"Windows檔案總管", 選擇"電腦"後按滑鼠右鍵, 選擇"管理"->"服務與應用程式"->"服務", 選擇"Telnet"後按滑鼠右鍵, 選擇"內容", 在"啟動類型"選擇"自動"或"手動", 再按下"啟動"

2012年9月23日 星期日

101年年度親子環島旅遊

        八月十五日請了四天年假進行我們家一年一次的全家旅行, 今年我們全家要進行熱氣球腳踏車騎乘的汽車環島之旅.

中壢->花蓮 (東華大學,立川魚場,豐春冰果室)
        颱風剛過兩周, 蘇花才搶通一周, 為了避免卡在蘇花公路, 我們一大早五點多由中壢出發經雪隧, 蘇花到花蓮. 正如預期雪隧一路順暢, 到了南方澳買了早餐後才開上蘇花公路, 拜公路總局之賜, 雖然沿途是柔腸寸斷, 處處都是搶通的痕跡, 我們超乎預期的才八點多就到了花蓮.
        晚上住的是假日經典飯店, 要下午三點才能進房, 所以先到東華大學欣賞美麗如畫的風景

然後提前到立川漁場吃午餐, 中午太熱, 摸黃金蜆還太早跑去理想大地吃紅豆冰, 趁空查手機得知豐春冰果室很有名, 於是就先驅車前往尋找, 沒想到非假日還是人山人海, 柴燒紅豆竽頭冰是絕對不能錯過的, 由於使用的是古早的慢式製冰法, 竽頭冰綿到不像話, 配上柴燒的紅豆與招牌的甘蔗冰, 真不是浪得虛名的名店.
        下午回到立川漁場摸黃金蜆, 今年費用比較貴(200元),又不能折抵漲價的九層塔炒黃金蜆(200元), 雖然還是很好吃, 但是來了好幾次, 也不再那麼吸引人了,(餐廳內的價格與外面的簡餐價格相同, 但是有冷氣), 想到以後可能不會再來了, 所以晚餐就到餐廳內再次享受黃金蜆大餐了.

        晚上回到假日經典飯店, 沒想到還是保持的與兩年前一樣新穎與熱誠, 借個wii竟然馬上派出兩位服務人員引導我們至會議室, 感覺真像VIP,教育訓練做的真的不錯, 真是值得推薦的飯店. 晚上到市區吃個蚵仔煎與愛玉冰來當晚餐還真是不錯,暑假的花蓮還真是熱鬧呀!

花蓮->花蓮 (慈濟精舍,七星潭,花蓮酒廠,自行車道,南濱夜市)
       隔日先去花蓮慈濟精舍參觀, 再沿著七星潭逛一下柴魚博物館,吃個稻草燒的生魚片,

經過花蓮酒廠逛逛酒廠商品,前年來這還享用了現釀啤酒與黑麥汁,因為待會還要單車騎乘,所以只好割愛了.

接著準備住進今晚的洄瀾客棧, 休息一下並享用花蓮名產的下午茶來補充體力後,

就要享受海天一色微風輕拂的花蓮單車騎乘,路線是沿花蓮港到南濱夜市,順便逛逛夜市,體驗一下花蓮人的生活.

花蓮->關山 (馬路"上"日本料理,豐春冰果室,雲山水,六十石山)
        八月十七日,花蓮到關山,中午買了知名的"馬路上"日本料理(花蓮市光復街301號)當午餐後,便朝關山前進,到了壽豐鄉又嘴饞的到豐春冰果室買柴燒紅豆竽頭冰,順道看看美麗如詩如畫的雲山水

        金針花季當然要看看,六十石山規畫的還不錯,沿路單向通車避免會車的危險,滿山遍野的金針花相伴,配上炸金針與金針排骨還真是享受.

晚上住進山水居並享用當地有名的關山飯包後,等待明日的熱氣球.

關山->台東 (熱氣球,關山自行車道,池上飯包,初鹿牧場,原生藥用植物園)
        十八日四點半起床,掙扎了好久才把大家從床鋪上挖起來,帶著四雙睡眼惺忪的眼睛,朝鹿野高台前進,到了現場才發現人山人海,要搭熱氣球的票(繫留飛行,也就是熱氣球底下綁著繩索,只能上下飛行)早已賣完,還好我們只是來看看熱氣球的,看著扁扁的熱氣球加熱灌風,約二十分鐘才終於完成充氣,聽著台上主持人介紹飛行員來自的國家,並與大家打招呼後,隨即駕著熱氣球緩緩昇空.

        帶著驚奇的心情回到飯店,準備關山自行車道騎乘,關山環鎮自行車道應該是全國數一數二早的自行車道,環繞關山鎮的自行車道雖然有高有低,但還是適合全家大小一起來運動,路線終點還是一個很大的公園,非常適合親子共遊.即使是坐火車到關山,站前就有飯店住宿與腳踏車租借非常方便,關山鎮公所做的真不錯.

        便當便當好吃的便當(台語發音),當聽到這個聲音你會想到哪裡?不是福隆就是池上,池上飯包打出池上米的名聲,來到池上不吃吃池上飯包絕對對不起自己的肚皮,今天的午餐當然就是池上飯包,在火車上吃著池上飯包真是令人回味,吃飽後還能到樓上參觀飯包博物館.




台東->高雄 (太麻里金針山,南迴公路)
        太麻里金針山的路比較沒有六十石山明確,用GoogleMap還開到荒涼的山上,還好及時回頭免得到時候上新聞就好笑了. 沿著牌樓後上山與下山是同一條路,沿著山路還可以眺望太平洋,進入金針山後,沿路或多或少都有些金針花,有點搞不清楚哪裡才是金針花區,最後到了忘憂谷才真的是有比較多的金針花,不過停車是個大問題,靠著山路邊停車要小心一點,才不會出問題.或許用付費搭小巴來管制上山的車輛才不會有三多的問題(花多,人多,車輛多).
        欣賞完金針花後便是長時間無聊的路途,走南迴到高雄市區會花上半天的時間,還好大家也都玩得有點累了,在便利商店休息的時候居然碰上有人徒步環島,這比單車環島還更神,"小饅頭"加油,不是每個人都會有您這樣的毅力與經歷,希望您一切平安順利.

高雄->中壢 (蓮池潭騎腳踏車,龔家楊桃湯,海青王家口袋燒餅,劉家酸菜白肉鍋)      
        早晨從蓮潭會館起床,今天是我們環島的最後一天,在路邊用信用卡借了四輛腳踏車來個環潭旅遊,高雄真熱,還好只是在蓮池潭環繞一周,沿途還蠻多樹蔭,途中還有龍虎塔可逛,騎到快沒力的我,趕快騎完一圈後就去找海青王家口袋燒餅當早餐補充體力,又買了龔家楊桃湯止渴,真的只有眷村區才有便宜大碗又實在的東西.
        中午肚子還飽飽的,吃不太下,找了個口味較重的劉家酸菜白肉鍋,這白肉鍋還真讚,飽飽的肚子還是把火鍋與水餃給吃光了.回途又再買了四杯的龔家楊桃湯,當作此次環島尾聲的最後一擊.

2012年8月30日 星期四

Web 欄位輸入控制

in javascript:
function functionxxx(e)
{
var key = window.event ? e.keyCode : e.which;
var keychar = String.fromCharCode(key);
reg = /\\d|[\\b]/;//allow number only and backspace
return reg.test(keychar);
}

in HTML:
onKeyPress=return functionxxx(event);

//數字與Backspace鍵
reg = /\\d|[\\b]/;

//數字,a~f,A~F與Backspace鍵
reg = /\\d|[a-f]|[A-F]|[\\b]/;
//reg:Regular Expression
正規表示式
字元說明簡單範例
\避開特殊字元/A\*/ 可用於比對 "A*",其中 * 是一個特殊字元,為避開其特殊意義,所以必須加上 "\"
^比對輸入列的啟始位置/^A/ 可比對 "Abcd" 中的 "A",但不可比對 "aAb"
$比對輸入列的結束位置/A$/ 可比對 "bcdA" 中的 "A",但不可比對 "aAb"
*比對前一個字元零次或更多次/bo*/ 可比對 "Good booook" 中的 "booo",亦可比對 "Good bk" 中的 "b"
+比對前一個字元一次或更多次,等效於 {1,}/a+/ 可比對 "candy" 中的 "a",但不可比對 "caaandy"
?比對前一個字元零次或一次/e?le?/ 可比對 "angel" 中的 "el",但不可比對 "angle"
.比對任何一個字元(但換行符號不算)/.n/ 可比對 "nay, an apple is on the tree" 中的 "an" 和 "on",但不可比對 "nay"
(x)比對 x 並將符合的部分存入一個變數/(a*) and (b*)/ 可比對 "aaa and bb" 中的 "aaa" 和 "bb",並將這兩個比對得到的字串設定至變數 RegExp.$1 和 RegExp.$2。
xy比對 x 或 y/a*b*/g 可比對 "aaa and bb" 中的 "aaa" 和 "bb"
{n}比對前一個字元 n 次,n 為一個正整數/a{3}/ 可比對 "lllaaalaa" 其中的 "aaa" 但不可比對 "aa"
{n,}比對前一個字元至少 n 次,n 為一個正整數/a{3,}/ 可比對 "aa aaa aaaa" 其中的 "aaa" 及 "aaaa" 但不可比對 "aa"
{n,m}比對前一個字元至少 n 次,至多 m 次,m、n 均為正整數/a{3,4}/ 可比對 "aa aaa aaaa aaaaa" 其中的 "aaa" 及 "aaaa" 但不可比對 "aa" 及 "aaaaa"
[xyz]比對中括弧內的任一個字元/[ecm]/ 可比對 "welcome" 中的 "e" 或 "c" 或 "m"
[^xyz]比對不在中括弧內出現的任一個字元/[^ecm]/ 可比對 "welcome" 中的 "w" "l" "o" 可見出其與 [xyz] 功能相反 同時請同學也注意 /^/ 與 [^] 之間功能的不同
[\b]比對退位字元(Backspace character)可以比對一個 backspace ,也請注意 [\b] 與 \b 之間的差別
\b比對英文字的邊界,例如空格例如 /\bn\w/ 可以比對 "noonday" 中的 'no' ;
/\wy\b/ 可比對 "possibly yesterday." 中的 'ly'
\B比對非「英文字的邊界」例如, /\w\Bn/ 可以比對 "noonday" 中的 'on' ,
另外 /y\B\w/ 可以比對 "possibly yesterday." 中的 'ye'
\cX比對控制字元(Control character),其中 X 是一個控制字元/\cM/ 可以比對 一個字串中的 control-M
\d比對任一個數字,等效於 [0-9]/[\d]/ 可比對 由 "0" 至 "9" 的任一數字 但其餘如字母等就不可比對
\D比對任一個非數字,等效於 [^0-9]/[\D]/ 可比對 "w" "a"... 但不可比對如 "7" "1" 等數字
\f比對 form-feed若是在文字中有發生 "換頁" 的行為 則可以比對成功
\n比對換行符號若是在文字中有發生 "換行" 的行為 則可以比對成功
\r比對 carriage return
\s比對任一個空白字元(White space character),等效於 [ \f\n\r\t\v]/\s\w*/ 可比對 "A b" 中的 "b"
\S比對任一個非空白字元,等效於 [^ \f\n\r\t\v]/\S/\w* 可比對 "A b" 中的 "A"
\t比對定位字元(Tab)
\v比對垂直定位字元(Vertical tab)
\w比對數字字母字元(Alphanumerical characters)或底線字母("_"),等效於 [A-Za-z0-9_]/\w/ 可比對 ".A _!9" 中的 "A" "_" "9"
\W比對非「數字字母字元或底線字母」,等效於 [^A-Za-z0-9_]/\W/ 可比對 ".A _!9" 中的 "." " " "!" 可見出其與 \w 功能恰好相反
\ooctal比對八進位,其中octal是八進位數目/\oocetal123/ 可比對 與 八進位的ASCII中 "123" 所相對應的字元值
\xhex比對十六進位,其中hex是十六進位數目/\xhex38/ 可比對 與 16進位的ASCII中 "38" 所相對應的字元

通用式說明及範例比對不成立之字串
/a/含字母 "a" 的字串,例如 "ab", "bac", "cba""xyz"
/a./含字母 "a" 以及其後任一個字元的字串,例如 "ab", "bac"(若要比對.,請使用 \.)"a", "ba"
/^xy/以 "xy" 開始的字串,例如 "xyz", "xyab"(若要比對 ^,請使用 \^)"axy", "bxy"
/xy$/以 "xy" 結尾的字串,例如 "axy", "abxy"以 "xy" 結尾的字串,例如 "axy", "abxy" (若要比對 $,請使用 \$)"xya", "xyb"
/[13579]/包含 "1" 或 "3" 或 "5" 或 "7" 或 "9" 的字串,例如:"a3b", "1xy""y2k"
/[0-9]/含數字之字串不含數字之字串
/[a-z0-9]/含數字或小寫字母之字串不含數字及小寫字母之字串
/[a-zA-Z0-9]/含數字或字母之字串不含數字及字母之字串
/b[aeiou]t/"bat", "bet", "bit", "bot", "but""bxt", "bzt"
/[^0-9]/不含數字之字串(若要比對 ^,請使用 \^)含數字之字串
/[^aeiouAEIOU]/不含母音之字串(若要比對 ^,請使用 \^)含母音之字串
/[^\^]/不含 "^" 之字串,例如 "xyz", "abc""xy^", "a^bc"

通用表示法的特定字元說明等效的通用表示法
\d數字[0-9]
\D非數字[^0-9]
\w數字、字母、底線[a-zA-Z0-9_]
\W非 \w[^a-zA-Z0-9_]
\s空白字元[ \r\t\n\f]
\S非空白字元[^ \r\t\n\f]









通用表示法說明
/a?/零或一個 a(若要比對? 字元,請使用 \?)
/a+/一或多個 a(若要比對+ 字元,請使用 \+)
/a*/零或多個 a(若要比對* 字元,請使用 \*)
/a{4}/四個 a
/a{5,10}/五至十個 a
/a{5,}/至少五個 a
/a{,3}/至多三個 a
/a.{5}b/a 和 b中間夾五個(非換行)字元

與通用式相關的方法功能
re.exec(string)從字串 string 抽取符合通用式 re 的子字串,並以字串陣列傳回
re.test(string)以字串 string 比對通用式 re,並傳回比對結果(true 代表比對成功,false 代表比對失敗)
string.search(re)通用式 re 在某個字串 string 出現的位置
string.match(re)從字串 string 抽取符合通用式 re 的子字串,並以字串陣列傳回,此功能和 re.exec(string) 相同
string.replace(renewStr)將字串 string 符合通用式 re 的部分,代換為 newStr

2012年8月24日 星期五

花東親子旅遊

花蓮:
1.海濱自行車道(洄瀾客棧~南濱夜市)(免費)
2.立川漁場摸黃金蜆(門票),豐春冰果室吃柴燒紅豆芋頭冰
3.慕谷慕魚(免費)
4.柴魚博物館,七星潭(免費)
5.鯉魚潭(免費)
6.自強夜市,南濱夜市,市區夜市(免費)
7.東華大學(免費)
8.雲山水(免費)
9.六十石山金針花(免費)
10.光復糖廠(免費)
11.馬太鞍濕地
12.兆豐農場(門票,非常大)
13.瑞穗牧場(免費)

台東:
1.悟饕池上飯包博物館(免費,可買好吃的飯包)
2.關山鎮環鎮自行車道(13公里)+親水公園(門票 50元但值得)
3.鹿野高台熱氣球(免費)
4.初鹿牧場(門票小貴 100元 不能抵消費,區域不大)
5.原生應用植物園(門票可以完全抵消費)
6.太麻里金針山(免費,有點遠且規模比不上六十石山,但路途中可遠眺海岸)

2012年1月6日 星期五

Write ini with TIniFile

#include "IniFiles.hpp"


void __fastcall TMain::Config1Click(TObject *Sender)
{
    //config setting
    if (FrmConfig->ShowModal() == mrOk)
    {
        try
        {
            String iniDirPath = ExtractFilePath(Application->ExeName)+ "\Config.ini";//ini data path
            TIniFile *aIniFile = new TIniFile(iniDirPath);
            aIniFile->WriteString("Path","SharePath",FrmConfig->edtPort->Text);
            aIniFile->WriteString("Port","ComunicationPort",FrmConfig->edtPath->Text);
        }
        catch(...)
        {
            ShowMessage("Save Config Data Fail!");
        }
    }
}

A dialog for choice catalog path in BCB


void __fastcall TMain::btnChoicePathClick(TObject *Sender)
{
    String Dir=edtPath->Text;
    //SelectDirectory(Dir,TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt,0);
    SelectDirectory(Dir,"",Dir);
    edtPath->Text=Dir;
}







limited TEdit key in 0~9 and value in BCB

//limited 0~9 and value < 65535 in BCB
void __fastcall TMain::edtPortKeyPress(TObject *Sender, char &Key)
{
     if (((Key >= '0') && (Key <= '9')) || (Key == '\b'))
     {
        if ((Key >= '0') && (Key <= '9'))
        {
            if (StrToInt(edtPort->Text+Key) > 65535)
                Key = 0;
        }
     }
     else
     {
        Key = 0;
     }
}