轉換IP碼的小程式 |
|
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
這是根據下面文章寫成的小程式,沒有什麼艱深技術,只是方便而已 :)
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23869
附加檔案:23914_IPCode.zip
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
|
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
|
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
引言: 缺少bin.pas,自己補充了兩個函數GetAStr,GetStrCount 搞定,謝謝!這兩個函數的程式碼如下: function GetStrCount(_OStr:string;_IDStr:string):integer; var i_:word; timeOfChange_:word; beforeCk_,currentCk_:boolean; function isID(_xch:char):boolean; begin if Pos(_xch,_IDStr)>0 then Result:=true else Result:=false; end; begin timeOfChange_:=0; beforeCk_:=true; for i_:=1 to Length(_OStr) do begin currentCk_:=isID(_OStr[i_]); if currentCk_ xor beforeCk_ then Inc(timeOfChange_); beforeCk_:=currentCk_; end; if not beforeCk_ then Inc(timeOfChange_); Result:=timeOfChange_ div 2; end; function GetAStr(_OStr:string;_no:byte;_IDStr:string):string; var i_:word; beforeCk_,currentCk_:boolean; timeOfChange_:word; function isID(_xch:char):boolean; begin if Pos(_xch,_IDStr)>0 then Result:=true else Result:=false; end; begin Result:=''; beforeCk_:=true; timeOfChange_:=0; i_:=0; repeat Inc(i_); currentCk_:=isID(_OStr[i_]); if (beforeCk_ xor currentCk_) then Inc(timeOfChange_); if timeOfChange_=(_no*2-1) then Result:=Result _OStr[i_]; beforeCk_:=currentCk_; until ((timeOfChange_=(_no*2)) or (i_=Length(_OStr))); end;由於過於繁複,最近我已經將這兩個函數合併成下面的程序: procedure SplitStr(AStr:string; Separator:TSysCharSet; var Strings:TStrings); var a,b:integer; begin a:=1; Strings.Clear; AStr:=AStr '_'; for b:=1 to Length(AStr) do if (AStr[b] in Separator) or (b=Length(AStr)) then begin if b-a>1 then Strings.Add(Copy(AStr,a,b-a)); a:=b 1; end; end;或者也可以直接利用系統的ExtractStrings函數 |
vagrant
一般會員 發表:29 回覆:72 積分:20 註冊:2003-07-04 發送簡訊給我 |
謝謝,你的好象太復雜了,我是用下面的方法來實現的
function TForm1.GetAStr(str1: String; i: integer; str3: char): String; var SL:TStringList; begin sL:=TStringList.Create; sl.Delimiter:=Str3; sl.DelimitedText:=Str1; Result:=SL.Strings[i-1]; sl.Free; end; function TForm1.GetStrCount(Str1:String;Str2:Char): integer; var SL:TStringList; begin sL:=TStringList.Create; sl.Delimiter:=Str2; sl.DelimitedText:=Str1; Result:=(sl.count); sl.Free; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |