这就是我想要做的.我有一个Tstringlist,一个名字.如果名称格式为DOE,JOHN,NMI,我希望它将名称拆分为3个不同的字符串.
但问题是,如果没有中间的首字母怎么办?或名字.就像它可能只是DOE一样,然后最后两行超出界限.程序崩溃了.什么是最好的解决方案?
var ptname, physname: Tstringlist;
if pos(',',Msg.Grp2[0].ObsReq[0].OrderingProviderFamilyName) > 0 then // split it if it has a comma
begin
physname := TstringList.Create;
physname.CommaText := Msg.Grp2[0].ObsReq[0].OrderingProviderFamilyName;
Parameters.ParamByName('@OrderingLastNameOBR16').Value := physname[0];
Parameters.ParamByName('@OrderingFirstNameOBR16').Value := physname[1];
Parameters.ParamByName('@OrderingMiddleNameOBR16').Value := physname[2];
physname.Free;
end
Run Code Online (Sandbox Code Playgroud)
dth*_*rpe 15
使用TStringList.Count
.
physname := TstringList.Create;
physname.CommaText := Msg.Grp2[0].ObsReq[0].OrderingProviderFamilyName;
if physname.Count > 0 then
begin
Parameters.ParamByName('@OrderingLastNameOBR16').Value := physname[0];
if physname.Count > 1 then
begin
Parameters.ParamByName('@OrderingFirstNameOBR16').Value := physname[1];
if physname.Count > 2 then
begin
Parameters.ParamByName('@OrderingMiddleNameOBR16').Value := physname[2];
end;
end;
end;
physname.Free;
Run Code Online (Sandbox Code Playgroud)