請問IP轉換程式要怎麼寫比較不會出錯?? |
答題得分者是:gemi0305
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
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 發送簡訊給我 |
以前有寫過類似的東西:
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 發送簡訊給我 |
|
willchen
初階會員 發表:64 回覆:81 積分:29 註冊:2003-05-23 發送簡訊給我 |
版主謝謝,我已經寫出來了,多謝你的想法
我把寫正確的程式 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 發送簡訊給我 |
剛剛把你的問題看錯了~
再試試看~
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; }國泰平安 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |