直接用 Pos 方法就可以,或者自己编个例程(测试过了,给分啊):
{
运行后,StrX中的字符串为各“键”名(如ABC;EFG等),Objects为一TList对象,包含各个数值(仅考虑为整数)
}
function IsStdChar(ch: char): Boolean;
var
Tmp: Integer;
begin
Tmp:= Ord(ch);
Result:= ((Tmp >= Ord('A')) and (Tmp <= Ord('Z'))) or
((Tmp >= Ord('a')) and (Tmp <= Ord('z')));
end;
function IsNumChar(ch: char): Boolean;
begin
Result:= ch in ['0'..'9'];
end;
procedure PeekValues(const FileName: String; StrX: TStrings);
var
N, X, L, State: Integer;
S: String;
Pr, Pr1: PChar;
aList: TList;
begin
StrX.LoadFromFile(FileName);
S:= StrX.Text;
StrX.Clear;
Pr:= PChar(S);
State:= 0;
Pr1:= Pr;
while Pr^ <> #0 do begin
case State of
0: if IsStdChar(Pr^) then begin
Pr1:= Pr;
State:= 1;
end;
1: if not IsStdChar(Pr^) then begin
State:= 0;
if IsNumChar(Pr^) then begin
Val(Pr, X, L);
if L <> 0 then Dec(L) else L:= StrLen(Pr);
Pr^:= #0;
N:= StrX.IndexOf(Pr1);
if N >= 0 then
aList:= TList(StrX.Objects[N])
else begin
aList:= TList.Create;
StrX.AddObject(Pr1, aList);
end;
aList.Add(Pointer(X));
Inc(Pr, L);
Continue;
end;
end;
end;//case
Inc(Pr);
end;
end;