線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1588
推到 Plurk!
推到 Facebook!

這樣的字串問題要怎樣處理會比較快呢?

答題得分者是:collonil
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-30 17:39:47 IP:210.80.xxx.xxx 未訂閱
Dears: 小弟現在我有一些字串資料要處理:輸入的資料長度不一定,但是如果長度不足32Byte,需要以0x00補足。然後字串最後要加上"0x0a0dL"當截止字元。 此類資料目前有114筆,所以小弟我宣告: struct person_struct { String cmd_no,address }; person_struct person[114]; 這樣的陣列來先做處理。 可是,似乎加上0x00之後都會被截斷。請問有沒有什麼比較好的方式,能夠簡單的來處理這樣的問題呢? 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
collonil
中階會員


發表:13
回覆:56
積分:63
註冊:2003-03-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-30 18:59:42 IP:210.71.xxx.xxx 未訂閱
0x00通常代表字串結束, 所以之後的資料會被截掉, 如果以空白(0x20)填補 未滿32 bytes的部分不知道能不能接受?    如果一定要0x00的話, 可能就無法以字串的方式處理了, 或許要用char陣列, 一byte一byte分開處理...    -- BCB學習中~~
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-31 11:45:26 IP:210.80.xxx.xxx 未訂閱
引言:0x00通常代表字串結束, 所以之後的資料會被截掉, 如果以空白(0x20)填補 未滿32 bytes的部分不知道能不能接受? 如果一定要0x00的話, 可能就無法以字串的方式處理了, 或許要用char陣列, 一byte一byte分開處理...
Dear: 如果,我把AnsiString字串轉為傳統的字串陣列,如下: char temp[31]; strcpy(temp,(person[0].cmd_no).c_str()); 這樣的話,他字串之後是不是就為00了。還是,我自己要再自動填入? 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-31 13:43:28 IP:218.160.xxx.xxx 未訂閱
引言: 如果,我把AnsiString字串轉為傳統的字串陣列,如下: char temp[31]; strcpy(temp,(person[0].cmd_no).c_str()); 這樣的話,他字串之後是不是就為00了。還是,我自己要再自動填入?
不需再另外處理, 白花時間.
引言: 可是,似乎加上0x00之後都會被截斷。請問有沒有什麼比較好的方式,能夠簡單的來處理這樣的問題呢?
假如是寫入檔案,請用BINARY寫入. 寫入用 fopen("檔名","wb"); 讀出用 fopen("檔名","rb");
collonil
中階會員


發表:13
回覆:56
積分:63
註冊:2003-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-31 13:54:36 IP:210.71.xxx.xxx 未訂閱
引言: Dear: 如果,我把AnsiString字串轉為傳統的字串陣列,如下: char temp[31]; strcpy(temp,(person[0].cmd_no).c_str()); 這樣的話,他字串之後是不是就為00了。還是,我自己要再自動填入? 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
char temp[31] = {NULL}; strcpy(temp,(person[0].cmd_no).c_str()); 如果person[0].cmd_no長度小於31 bytes, 那temp最後會是0x00; 如果等於31 bytes, 那temp後不會是0x00; 如果大於31 bytes, 會超過temp的範圍, 蓋到其他資料... -- BCB學習中~~
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-31 13:56:56 IP:218.160.xxx.xxx 未訂閱
引言: struct person_struct { String cmd_no,address }; person_struct person[114];
不好意思,剛刪才看到你這個東東,因為我一般都是會定義 struct person_struct { char cmd_no[12],address[20]; }; 再用BINARY檔存取很方便, 但你用 String 的話一定不是使用BINARY,可否再給我們多一點點的提示或程式片斷, 讓我們比較好猜.
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-31 14:18:28 IP:210.80.xxx.xxx 未訂閱
   
引言: 不好意思,剛刪才看到你這個東東,因為我一般都是會定義 struct person_struct { char cmd_no[12],address[20]; }; 再用BINARY檔存取很方便, 但你用 String 的話一定不是使用BINARY,可否再給我們多一點點的提示或程式片斷, 讓我們比較好猜.
Dear: 因為,我的程式中有114筆資料需要給使用者修改內容,所以我是使用edit,TString的元件,來讓使用者修改。因此,我用string來儲存,以及處理(因為,除了要存資料外,需要另外再處理。ex.加上字串長度,及一些check sum等機制)。然後,因為資料處理完畢後,必須要再透過RS-232傳輸出去。因此才會有,長度不足要補0x00以及截止位元的問題。 小弟我寫程式的時間不長,因此只會使用一些土法煉鋼的技巧。煩請各位大大,多加指導~~ 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
collonil
中階會員


發表:13
回覆:56
積分:63
註冊:2003-03-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-31 14:25:55 IP:210.71.xxx.xxx 未訂閱
引言: Dear: 因為,我的程式中有114筆資料需要給使用者修改內容,所以我是使用edit,TString的元件,來讓使用者修改。因此,我用string來儲存,以及處理(因為,除了要存資料外,需要另外再處理。ex.加上字串長度,及一些check sum等機制)。然後,因為資料處理完畢後,必須要再透過RS-232傳輸出去。因此才會有,長度不足要補0x00以及截止位元的問題。 小弟我寫程式的時間不長,因此只會使用一些土法煉鋼的技巧。煩請各位大大,多加指導~~ 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
那就先使用String儲存及處理, 送出前再轉成char陣列, 轉換時再加上補0x00的動作... -- BCB學習中~~
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-31 15:29:14 IP:218.160.xxx.xxx 未訂閱
試試用: char ss[50]; sprintf(ss,"%-10s%-20s\r\n","AA","bbbb"); 看看是否合用.
系統時間:2024-05-18 7:00:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!