如何读取一行中有几个长短不一的字符变量(50分)

  • 主题发起人 主题发起人 caesar
  • 开始时间 开始时间
C

caesar

Unregistered / Unconfirmed
GUEST, unregistred user!
如下所示
帐号 金额 身份证号
123456 32.63 320101820506712
21523 6.12 320702194608129362
每个变量之间有个非数字相隔,如果在C中是很好读取的
 
用POS语句进行转换
 
具体语句如何,举例一下
 
start:=1;
i:=1;
x:=pos(bl,' ');
while x>0 do
begin
zhbl:=copy(bl,start,x-1);
start:=x+1;
inc(i);
x:=pos(copy(bl,start,length(bl)-x),' ');
end;


 
我是这样解决的:
function CheckSite(const Str, Ch: string; var Mystring: TStrings)
: boolean;
{字符串Str以Ch分隔成几段小字符串,该函数是将这些小字符串提取出来并保存在MyString中}
var
sit, n : integer;
S : string;
begin
Result := True;
MyString.Clear;
S := Str;
n := Length(Ch);
while True do
begin
if Pos(Ch, S) = 0 then
begin
MyString.Add(S);
Break;
end;
sit := Pos(Ch, S);
MyString.Add(Copy(S, 1, sit - 1));
S := Trim(Copy(S, sit + n, Length(S)));
end;
if MyString.Count < 2 then Result := False;
end;
使用方法:
var
slTmp : TStrings; //用来保存接收到的信息
begin
slTmp := TStringList.Create;
//TmpStr为你从文件中读出的每一行字符串,sChr为分隔符,如你上面就是空格:' ',结果保存在slTmp中
CheckSite(TmpStr, sChr, slTmp); //将信息保存到slTmp中
......
end;

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部