2008年12月18日 星期四

C++ Builder 專案 - Check Point

  本來的計畫書,是想寫一個搜尋,像是電話簿,而電話簿的內容,有名字跟電話,架構其實很簡單:
輸入:一個名字name
輸出:電話號碼phone
{
    OpenDialog1->Execute();
    Memo1->Lines->LoadFromFile(OpenDialog1->FileName);//開啟電話簿.txt
   Q:把電話簿.txt上的資料擷取下來,存在陣列All_name[i](存所有人的名字),All_phone[i](存所有人的電話)
   for(int j=0;j< i ; j++)
     {
       if(All_name[i]==name) 印出All_phone[i];
       else 印出 "電話簿裡沒有這個人";
    }
}
  我遇到的第一個問題就是怎麼上傳一個文字檔到BCB,我是參考老師把圖片放在BCB的方法,上述的架構有寫出來供參考。接下來遇到的第二個問題就是怎麼樣擷取資料,我想這是我目前處理最久的問題。本來想說像老師圖片那樣有長有高可以擷取他的像素的想法一樣劃葫蘆,可是筆記本的好像不是這樣子,他是分行的,這就把我搞得有點頭痛。後來我選擇的方式是用AnsiString加上.Length(),把他當作很長的字串印出。

  在我的能力範圍AnsiString加上.Length(),遇到的下一個問題就怎麼把其中的名字跟電話分開,還有每個人跟每個人之間分開,這是我現在還在想的問題。我想只要能成功的分開字串之後作分類,我的程式就開判斷就大功告成了吧!努力ing...

  其實我這裡舉電話簿,說真的,對我而言還滿有困難度的,因為輸入一個名字,其實不知道為什麼後來還有ASCII的問題,加上像是「張展翔」每一個字都是兩個char,說真的用數字真的比搞文字簡單阿!除了文字之外,電話本身也是一個問題,因為有人是手機,有人是室內電話,沒有一定的規則,還有區號的問題之類的。所以我在這裡可能會改變一下我的計畫,不要做電話簿,目前想法最後可能是輸入學號,輸出姓名吧!為什麼要這樣呢?只能說增加成功率,必須降低困難度。

  其實未來還有待改善,希望加一些動態宣告,不然寫死程式中的陣列大小,遇到更大資料的筆記本該怎麼辦呢!說真的要自己些一個程式真的很不簡單,感覺大一到現在的東西都沒有學以致用,特別是函數跟指標。只能說自己的功力要再加強,不然在以用函數跟指標會增加思考的複雜為理由而放棄了。

  

沒有留言:

張貼留言