delphi里面奇奇怪怪的函数真多。。

来源:互联网 发布:js setgcparameter 编辑:程序博客网 时间:2024/04/28 22:10

这两天作东西的时候碰到一个问题,要分析一长串用逗号分割的字符串,于是我是这么写的

TFindRec = record
    Sourcedata: string;
    Sign: integer;
    Data: string;
  end;   

function FindFirstData(AString: String;
  var F: TFindRec): Boolean;
var
  I:Integer;
begin
  F.sourcedata := AString;
  F.sign :=0;
  I := 1;
  repeat
    inc(I);
  until (AString[i] = ',') or (i = Length(AString));
  if AString[i] = ',' then
  F.data  :=Copy(AString, F.sign+1, I-F.sign-1)
  else
  F.data  :=Copy(AString, F.sign+1, I-F.sign);
  F.sign:=I;
  result := true;
end;


function FindNextData(var F: TFindRec): Boolean;
var
  I: Integer;
begin
  if F.sign  = Length(F.sourcedata) then
  begin
    F.Data := '';
    result := false;
    exit;
  end;
  I:=F.sign;
  repeat
    Inc(I);
  until (F.sourcedata[i] = ',') or (I = Length(F.sourcedata));
  if f.sourcedata[i] = ',' then
  F.data  := Copy(F.sourcedata, F.sign +1, I-F.sign-1)
  else
  F.data := Copy(F.sourcedata, F.sign+1, I-F.sign);
  F.sign := I;
  result := true;
end;

用的时候先用FindFirstData,然后就可以一直repeat使用FindNextData

思路是来自于FindFirst,FindNext系列函数,所以特意写了2个函数,而不是一个,这样虽然多写了几句

但是字符串只要遍历一遍就可以了~

没想到BOSS过来看了以后,说,完全不需要这么麻烦啊,然后叫我用TStringList的commaText函数,效果一样

试了试,果然。。。Use CommaText to get or set all the strings in the TStrings object in a single comma-delimited string.,这是Help里面写的。。。

汗一个啊。。Delphi的奇奇怪怪的函数真多。。或者说我的经验真的还很不够啊。。(BOSS果然强。。)

原创粉丝点击