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

AnsiString與結束字元疑問

 
hicrazyboy
一般會員


發表:2
回覆:2
積分:0
註冊:2004-04-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-04 23:39:47 IP:59.125.xxx.xxx 訂閱
AnsiString DataTmp ;
for (int i=0; i < 4096;i )
DataTmp = DataTmp Data[i];
char *Data資料包含了數個'\0'結束字元
所以無法以 DataTmp = Data;
將資料直接copy

上面的寫法真的很....
請問除了上面的寫法,有更快速的做法嗎
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-05 00:15:13 IP:203.73.xxx.xxx 訂閱
Delphi有StrMove這個function可以copy char*但不會copy\0,我不知道BCB可不可以
在SysUtils裡面,實際上它是呼叫Move函式來完成
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-05 00:31:35 IP:211.22.xxx.xxx 未訂閱
AnsiString DataTmp = "";
char *Data= "This is a test\0\0\0"; DataTmp = AnsiString(Data);
hicrazyboy
一般會員


發表:2
回覆:2
積分:0
註冊:2004-04-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-05 08:45:12 IP:59.125.xxx.xxx 訂閱
AnsiString DataTmp = "";
char *Data= "This is a test\0\0\0";
DataTmp = AnsiString(Data);
Edit1->Text = DataTmp.Length();
Edit: 14 ←此顯示14個字元
但因為Data我放的是 "二進位資料"
想轉成AnsiString 分析完後儲存
如果用以上的方式 都會將 '\0' 當作結束字元
因為一個二進位檔包含了數個'\0'
這並不是我想要的結果
謝謝上面兩位大哥的回覆

===================引 用 文 章===================
AnsiString DataTmp = "";
char *Data= "This is a test\0\0\0"; DataTmp =? AnsiString(Data);
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-05 09:59:01 IP:220.130.xxx.xxx 訂閱
如果有的話,
StrMove可以讓你指定你要從source端copy多少個字元,而不是以null-terminated的算法來操作
另外如果我沒記錯的話,std裡面的io是可以設escape char以避免如在command line中空白會被切掉的問題
//太久沒寫C 了..XD
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
系統時間:2024-05-08 0:28:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!