線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3323
推到 Plurk!
推到 Facebook!

轉換IP碼的小程式

 
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-14 11:59:10 IP:61.56.xxx.xxx 未訂閱
這是根據下面文章寫成的小程式,沒有什麼艱深技術,只是方便而已 :) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23869
附加檔案:23914_IPCode.zip
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-14 20:06:28 IP:61.59.xxx.xxx 未訂閱
你真是有心呀< > 給你拍拍手~~ =============================================================================== 提醒您,貼錯文章可立即傳訊通知該版版主/站長/副站長協助處理,不要放著不管喔< >
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-21 09:51:58 IP:61.56.xxx.xxx 未訂閱
謝謝 
vagrant
一般會員


發表:29
回覆:72
積分:20
註冊:2003-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-08 10:58:24 IP:218.189.xxx.xxx 未訂閱
缺少bin.pas,自己補充了兩個函數GetAStr,GetStrCount 搞定,謝謝!
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-08 18:34:58 IP:61.56.xxx.xxx 未訂閱
引言: 缺少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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-09 14:28:30 IP:218.16.xxx.xxx 未訂閱
謝謝,你的好象太復雜了,我是用下面的方法來實現的
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;
系統時間:2024-05-12 13:07:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!