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

請問IP轉換程式要怎麼寫比較不會出錯??

答題得分者是:gemi0305
willchen
初階會員


發表:64
回覆:81
積分:29
註冊:2003-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-24 16:42:31 IP:163.28.xxx.xxx 未訂閱
 AnsiString _fastcall TForm1::IPConvert(AnsiString IP) //轉換140.116.39.126->140116039126
{
 AnsiString IPreturn;
 while(IP.Length()!=0)
 {
  if(IP.Length()>2)
  {
   AnsiString IPtemp=IP.SubString(1,IP.Pos(".")-1);
   if(StrToInt(IPtemp)>=10&&StrToInt(IPtemp)<100)
   {
    IPtemp="0" IPtemp;
   }
   if(StrToInt(IPtemp)<10)
   {
    IPtemp="00" IPtemp;
   }
   IPreturn=IPreturn IPtemp;
   IP.Delete(1,IP.Pos("."));
  }
  else
  {
   if(StrToInt(IP)>=10&&StrToInt(IP)<100)
   {
    IP="0" IP;
   }
   if(StrToInt(IP)<10)
   {
    IP="00" IP;
   }
   IPreturn=IPreturn IP;
   IP.Delete(1,IP.Length());
  }
 }
 return IPreturn;
}
以上是我寫的小程式,但是當我代入140.116.39.126要轉換時就會出問題,我已經考慮很多狀況,但還是很難全盤解決 請問BCB本身有內建函式可以把140.116.39.126轉成140116039126的函式嗎??
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-24 17:02:20 IP:210.66.xxx.xxx 未訂閱
以前有寫過類似的東西: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37193    幫你改寫一下:     
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     ShowMessage(IPConvert("140.116.39.126"));
}
//---------------------------------------------------------------------------
AnsiString TForm1::IPConvert(AnsiString IPAddr)
{
     String Resulttxt="";         IPAddr.Insert(".",IPAddr.Length() 1);         while (!IPAddr.IsEmpty())
     {
           if (IPAddr.SubString(1,1)==".")
               IPAddr.Delete(1,1);
           else
           {
               Resulttxt =IPAddr.SubString(1,IPAddr.Pos(".")-1);
               IPAddr.Delete(1,IPAddr.Pos("."));
           }
     }         return Resulttxt;    }     
你可以直接拿IPConvert()來用~ 國泰平安
willchen
初階會員


發表:64
回覆:81
積分:29
註冊:2003-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-24 17:15:40 IP:163.28.xxx.xxx 未訂閱
版主您好,謝謝你的程式,但是剛剛try了一下,發現如果140.116.39.126 會轉成14011639126 可是我是希望能夠轉成140116"0"39126這樣型態,那樣需要改寫那個部分比較好??
willchen
初階會員


發表:64
回覆:81
積分:29
註冊:2003-05-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-24 17:39:55 IP:163.28.xxx.xxx 未訂閱
版主謝謝,我已經寫出來了,多謝你的想法 我把寫正確的程式 class="code"> AnsiString __fastcall TForm1::IPConverter(AnsiString IP) { AnsiString result; AnsiString temp; IP.Insert(".",IP.Length() 1); while(IP.Length()!=0) { temp=IP.SubString(1,IP.Pos(".")-1); if(StrToInt(temp)>9&&StrToInt(temp)<100) { temp="0" temp; } if(StrToInt(temp)<9) { temp="00" temp; } IP.Delete(1,IP.Pos(".")); result=result temp; } return result; } 發表人 - Gemi0305 於 2003/09/24 18:01:19
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-24 17:42:24 IP:210.66.xxx.xxx 未訂閱
剛剛把你的問題看錯了~ 再試試看~  
 
AnsiString TForm1::IPConvert(AnsiString IPAddr)
{
     String Resulttxt="";
     String TempTxt="";         IPAddr.Insert(".",IPAddr.Length() 1);
     while (!IPAddr.IsEmpty())
     {
          TempTxt.printf("d",IPAddr.SubString(1,IPAddr.Pos(".")-1).ToInt());
          Resulttxt  = TempTxt;
          IPAddr.Delete(1,IPAddr.Pos("."));
     }         return Resulttxt;    }
國泰平安 發表人 -
系統時間:2024-04-29 22:01:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!