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

Replace 問題

答題得分者是:mieng
111111dd
一般會員


發表:25
回覆:32
積分:11
註冊:2003-12-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-13 20:05:20 IP:61.59.xxx.xxx 未訂閱
請教各位高手..... 在C++的AnsiPos使用起來無法達到目的,只是要用Builder把一篇文章中的*號及>符號代換成space鍵.先把文章Load到ListBox1,再把符號做成的一篇文章Load到ListBox2,用以下的程式碼做代換,但是沒動作.是程式寫錯?多多指教.    char *chars; char chartostr[1024]; int linenum1,linenum2,position,length; char const *Path1 = "d:\\test.txt"; char const *Path2 = "d:\\symbol.txt"; ListBox1->Items->LoadFromFile(Path1); ListBox2->Items->LoadFromFile(Path2); linenum1=ListBox1->Items->Count; linenum2=ListBox3->Items->Count;    for(int i=0;iItems->Strings[i]->Text).AnsiPos(ListBox2-Items->Strings[ii]); if(position!=0){ ListBox1->Items->Strings[ii].Delete(position,1); ListBox1->Items->Strings[ii].Insert(" ",position); } } } 發表人 - 111111dd 於 2003/12/13 20:24:18
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-13 21:35:24 IP:61.221.xxx.xxx 未訂閱
int cnt,n;
String temp,temp2,ch[2]={"*",">"};
cnt=ListBox1->Items->Count;      for (int i=0;iItems->Strings[i];
    for (int j=0;j<2;j  )
    {
      temp2="";
      while (temp.Pos(ch[j]) != 0)
      {
        temp2=temp2 temp.SubString(1,temp.Pos(ch[j])-1)   " ";
        temp=temp.Delete(1,temp.Pos(ch[j]));
      }
      temp = temp2 temp;
    }
    ListBox2->Items->Add(temp);
  }
 
試試上面的程式能不能符合您的功能 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-13 22:07:04 IP:61.221.xxx.xxx 未訂閱
引言: 請教各位高手..... 在C++的AnsiPos使用起來無法達到目的,只是要用Builder把一篇文章中的*號及>符號代換成space鍵.先把文章Load到ListBox1,再把符號做成的一篇文章Load到ListBox2,用以下的程式碼做代換,但是沒動作.是程式寫錯?多多指教. char *chars; char chartostr[1024]; int linenum1,linenum2,position,length; char const *Path1 = "d:\\test.txt"; char const *Path2 = "d:\\symbol.txt"; ListBox1->Items->LoadFromFile(Path1); ListBox2->Items->LoadFromFile(Path2); linenum1=ListBox1->Items->Count; linenum2=ListBox3->Items->Count; for(int i=0;iItems->Strings[i]->Text).AnsiPos(ListBox2-Items->Strings[ii]); if(position!=0){ ListBox1->Items->Strings[ii].Delete(position,1); ListBox1->Items->Strings[ii].Insert(" ",position); } } }
111111dd 你好: 請參考以下的做法 < class="code"> int i=0; AnsiString sz; TStringList *sl=new TStringList; sl->LoadFromFile("Src.txt"); for(i=0; iCount; i++) { sz=sl->Strings[i]; sz=StringReplace(sz, "*", " ", TReplaceFlags()<", " ", TReplaceFlags()<Strings[i]=sz; } sl->SaveToFile("Dst.txt"); delete sl; -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-13 22:09:06 IP:61.221.xxx.xxx 未訂閱
linenum1=ListBox1->Items->Count;
linenum2=ListBox2->Items->Count;      for(int i=0;iItems->Strings[i].AnsiPos(ListBox2->Items->Strings[ii]);
      while(position!=0)
      {
        ListBox1->Items->Strings[i]=ListBox1->Items->Strings[i].Delete(position,1);
        ListBox1->Items->Strings[i]=ListBox1->Items->Strings[i].Insert(" ",position);
        position = ListBox1->Items->Strings[i].AnsiPos(ListBox2->Items->Strings[ii]);
      }
    }
  }
 
上一篇好像搞錯了,這個應該才是您要的吧,紅色的是您錯誤的地方, 其中if要改成while不然每次就只會轉一個字 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
111111dd
一般會員


發表:25
回覆:32
積分:11
註冊:2003-12-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-13 22:19:26 IP:61.59.xxx.xxx 未訂閱
有看到結果了, 還是用 while (temp.Pos(ch[j]) != 0) { temp2=temp2 temp.SubString(1,temp.Pos(ch[j])-1) " "; temp=temp.Delete(1,temp.Pos(ch[j])); } 比AnsiPos明確. 感謝mieng兄,值得升為五星上將.
111111dd
一般會員


發表:25
回覆:32
積分:11
註冊:2003-12-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-13 22:28:25 IP:61.59.xxx.xxx 未訂閱
感謝mieng,RaynorPao  用   sz=StringReplace(sz, "*", " ", TReplaceFlags()<", " ", TReplaceFlags()<
系統時間:2024-05-18 17:10:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!