全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2330
推到 Plurk!
推到 Facebook!

用程式將反斜線轉換為雙反斜線

答題得分者是:supman
DBIN
一般會員


發表:5
回覆:7
積分:2
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-12 18:27:25 IP:210.66.xxx.xxx 未訂閱
請問尤其他程式匯入的某個字串 \ 字元都會被認為是特殊字元    --------------------如以下程式 AnsiString sz1="C:\GOOD\1.JPG"; Edit1->Text=sz1; ShowMessage(sz1);    輸入:"C:\GOOD\1.JPG" 結果變成 "C:GOOD.JPG"    請問如果利用程式搜尋字串裡面的 \ 轉換成為 \\ 讓結果正確呢!    小弟是過 RaynorPao 大大的方法    利用 AnsiString sz2=StringReplace(sz1,"\\" ,"\\\\", TReplaceFlags()<
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-12 19:03:38 IP:61.70.xxx.xxx 未訂閱
您好: 您是否是參考以下這篇呢? http://delphi.ktop.com.tw/topic.php?topic_id=47897 您說的不行不曉得出現了什麼問題? 發表人 - supman 於 2005/04/12 19:09:34
DBIN
一般會員


發表:5
回覆:7
積分:2
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-12 19:20:38 IP:210.66.xxx.xxx 未訂閱
抱歉~因為一開始輸入就是 \\ 所以沒有小弟這個問題 AnsiString sz1="C:\\abcd\\1234\\asd.exe"; >"<
DBIN
一般會員


發表:5
回覆:7
積分:2
註冊:2005-04-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-12 19:23:59 IP:210.66.xxx.xxx 未訂閱
小弟要的就是 AnsiString sz1="C:\GOOD\1.JPG"; ? ShowMessage(sz1); 在問號部分應該加入什麼程式碼才能讓 ShowMessage 秀出 C:\GOOD\1.JPG
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-12 20:18:15 IP:61.66.xxx.xxx 未訂閱
DBIN你好    把\換成\\就好了     
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString sz1="C:\\GOOD\\1.JPG";    ShowMessage(sz1);
} 
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-12 20:32:20 IP:203.204.xxx.xxx 未訂閱
您好: 1.如果您從某各資料來源讀入C:\abc,BCB就會自動將他改成C:\\abc了. 2.如果您是輸入AnsiString sz1="C:\GOOD\1.JPG"; 那您必須輸入AnsiString sz1="C:\\GOOD\\1.JPG";否則無解. 發表人 - supman 於 2005/04/12 20:33:17
DBIN
一般會員


發表:5
回覆:7
積分:2
註冊:2005-04-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-12 20:34:09 IP:218.175.xxx.xxx 未訂閱
引言: DBIN你好 把\換成\\就好了
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString sz1="C:\\GOOD\\1.JPG";    ShowMessage(sz1);
} 
感謝 blk5743 的熱心回覆但 AnsiString sz1="C:\GOOD\1.JPG"; 只是隨便舉ㄉ例子 事實上 sz1 內容是由其他地方帶過來的,所以無法用人工的方式將 \ 改成 \\ 小弟在想是否應該先將字串轉換成 ASCII CODE 然後找出 \ 的代碼再用 \\ 取代ㄋ 發表人 - Dbin 於 2005/04/12 20:38:09 發表人 - Dbin 於 2005/04/12 21:04:17
hdilwy
初階會員


發表:18
回覆:65
積分:41
註冊:2004-08-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-04-12 21:00:06 IP:140.128.xxx.xxx 未訂閱
試試看用切token的方式~~    
       char *msg=new char[256];
       char delim[]=" ,\t\n";//你要刪除的字元
       char *tok;
       msg=sz1.c_str();
       tok=strtok(msg,delim);//將不要的字元刪除
  
DBIN
一般會員


發表:5
回覆:7
積分:2
註冊:2005-04-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-12 21:16:48 IP:218.175.xxx.xxx 未訂閱
引言: 試試看用切token的方式~~
       char *msg=new char[256];
       char delim[]=" ,\t\n";//你要刪除的字元
       char *tok;
       msg=sz1.c_str();
       tok=strtok(msg,delim);//將不要的字元刪除
  
真是有趣的方式 ^^
m58610
初階會員


發表:22
回覆:83
積分:36
註冊:2003-09-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-14 05:13:30 IP:140.118.xxx.xxx 未訂閱
之前也為了這個問題傷透腦筋 搞了一個晚上才用好 我的做法是 1.將sz1轉成char(要注意sz1的長度要+1) 2.掃描整個char看有多少個是'\' 3.宣告另一個char並將長度設定為sz1長度+1+上述'\'的數量 4.利用回圈方式填入'\' 之後我就沒有轉回AnsiString了,因為我需要用Char*而不是字串  
AnsiString sz1="C:\GOOD\1.JPG";
int length = sz1.Length()   1;
char* temp = new char[ length ];
temp = sz1.c_str();
char* new;
int n = 0;
int add_num = 0;
for(int i = 0; i <= length; i  )
{
     if(temp[i] == '\\')
     {
          add_num  ;
     }
}
new = new char[ length   add_num ];
for(int i = 0; i <= length; i  )
{
     new[i n] = temp[i];
     if(temp[i] == '\\')
     {
          new[i n 1] = '\\';
          n  ;
     }
}
 
發表人 - m58610 於 2005/04/14 05:23:53
DBIN
一般會員


發表:5
回覆:7
積分:2
註冊:2005-04-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-04-14 10:31:26 IP:210.66.xxx.xxx 未訂閱
引言: 之前也為了這個問題傷透腦筋 搞了一個晚上才用好 我的做法是 1.將sz1轉成char(要注意sz1的長度要 1) 2.掃描整個char看有多少個是'\' 3.宣告另一個char並將長度設定為sz1長度 1 上述'\'的數量 4.利用回圈方式填入'\' 之後我就沒有轉回AnsiString了,因為我需要用Char*而不是字串
AnsiString sz1="C:\GOOD\1.JPG";
int length = sz1.Length()   1;
char* temp = new char[ length ];
temp = sz1.c_str();
char* new;
int n = 0;
int add_num = 0;
for(int i = 0; i <= length; i  )
{
     if(temp[i] == '\\')
     {
          add_num  ;
     }
}
new = new char[ length   add_num ];
for(int i = 0; i <= length; i  )
{
     new[i n] = temp[i];
     if(temp[i] == '\\')
     {
          new[i n 1] = '\\';
          n  ;
     }
}
 
發表人 - m58610 於 2005/04/14 05:23:53
呵呵,感謝!m58610 的支援,可惜沒辦法幫你家分了 >"<
系統時間:2024-05-19 14:14:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!