none
我該怎麼將使用者key in的數字判斷是否相同,並儲存為csv檔?? RRS feed

  • 問題

  • 各位先進...小弟有程式上的小疑問

    Q1~原攥寫為

         fileName = String::Concat(S"c:\\data\\",this->textBox2->Text,S".csv");
         StreamWriter * sw = new StreamWriter(fileName);
         sw->WriteLine(String::Concat(S"門牌:\r",this->textBox2->Text));
         sw->WriteLine(String::Concat(S"分機:\r",this->textBox3->Text));
         sw->Close();

    我該怎麼修改,判斷使用者在textBox3內key in 之數字是否相同

    若相同,直接覆蓋

    若不同,則換行儲存

    但2者都是儲存在同一個csv檔內!!

     

    Q2~

          為何開啟csv檔時,中文字與分號會出現亂碼?

          又該如何修改呢?

    • 已移動 璉璉 2009年11月14日 上午 05:48 (從:Visual Studio一般討論區(General))
    2006年12月11日 上午 02:08

解答

  • HI,

    StreamWriter * sw = new StreamWriter(fileName); //您可以利用第二個參數型態為Encoding控制讀寫內容有中文的檔案

    判斷使用者在textBox3內key in 之數字是否相同    //這一句話看不懂, 和什麼東西相同??

    tihs

    • 已標示為解答 璉璉 2009年11月14日 上午 05:48
    2006年12月11日 上午 02:43
  • 如果你是全面性替換修正,當然是直接讀成陣列,修改後寫回去。我自己有 VB 讀成陣列的函數:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=16&Function=208

    如果你只是針對一筆資料,則將檔案讀成字串,搜尋到指定筆的位置,也就是用 NewLine 的行數,從替換行或該位置插入,再將整個字串寫回。

    • 已標示為解答 璉璉 2009年11月14日 上午 05:48
    2006年12月14日 下午 03:00

所有回覆

  • HI,

    StreamWriter * sw = new StreamWriter(fileName); //您可以利用第二個參數型態為Encoding控制讀寫內容有中文的檔案

    判斷使用者在textBox3內key in 之數字是否相同    //這一句話看不懂, 和什麼東西相同??

    tihs

    • 已標示為解答 璉璉 2009年11月14日 上午 05:48
    2006年12月11日 上午 02:43
  • 謝謝您的解答~

    "判斷使用者在textBox3內key in 之數字是否相同"~

    就是指我輸出的csv檔內容為

    例如~

    門牌:123456 <---使用者key in

    分機:1111 <---使用者key in

    若使用者將"分機:"這個位置的內容改為2222

    則輸出的csv檔內容變為

    門牌:123456

    分機:1111

    分機:2222

    也就是會分段儲存新的資訊,但都在同一個csv檔!!

    2006年12月11日 上午 02:53
  • 有哪位先進可以幫我解答嗎??

    謝謝~~

    2006年12月14日 上午 12:54
  • 這個我曾經用 PHP 寫過,不過概念相同,CSV 基本上是利用 , 分隔的字串(如果你有考慮空格的話,那可能複雜一點點),你可以一次讀取一行,然後透過 String.Split 分割一行的字串資料然後進行比對,如果相同則複寫陣列資料,然後串成字串寫回檔案。

    by Chui-Wen Chiu
    Blog http://chuiwenchiu.spaces.live.com

     

    2006年12月14日 下午 01:52
  • 如果你是全面性替換修正,當然是直接讀成陣列,修改後寫回去。我自己有 VB 讀成陣列的函數:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=16&Function=208

    如果你只是針對一筆資料,則將檔案讀成字串,搜尋到指定筆的位置,也就是用 NewLine 的行數,從替換行或該位置插入,再將整個字串寫回。

    • 已標示為解答 璉璉 2009年11月14日 上午 05:48
    2006年12月14日 下午 03:00
  • 不過,如果 CSV 檔案很大,全部讀成陣列可能會耗去蠻多的記憶體,我建議可以先寫入一個暫存檔...

    by Chui-Wen Chiu
    Blog http://chuiwenchiu.spaces.live.com
    2006年12月15日 上午 01:07