星期六, 5月 26, 2007

Delphi的explode

  Explode是個用來分解字串的函式。比如說字串是1,2,3,中間是以,區隔,想要取出這三個數字,就必須用explode不可。

  可惜的是,Delphi裡面沒有這樣的函式,就必須手動來擴充了(人家php就有,delphi怎麼不學著點呢?)。

  在http://www.swissdelphicenter.ch/torry/showcode.php?id=1326 有相關的說明。紀錄如下:
ype
TStrArray = array of string;

function Explode(var a: TStrArray; Border, S: string): Integer;
var
S2: string;
begin
Result := 0;
S2 := S + Border;
repeat
SetLength(A, Length(A) + 1);
a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
Delete(S2, 1,Length(a[Result] + Border));
Inc(Result);
until S2 = '';
end;

// How to use it:
// Und hier ein Beispiel zur Verwendung:

procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
A: TStrArray;
AnzTokens, i: Integer;
begin
S := 'Ein=Text=durch=Geleichzeichen=getrennt';
AnzTokens := Explode(A, '=', S);
for i := 0 to AnzTokens -1 do
Memo1.Lines.Add(A[i]);
end;

後記:
從KTOP的舊資料翻出來這一段,應該適用
function Fetch(var AInput: string; const ADelim: string; const ADelete: Boolean): string;
這應是你要的
須uses IDGlobal

1 則留言:

匿名 提到...

delphi里也可以使用正则表达式,有朋友在用,据说功能很强