这就是我想要做的。我有一个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

最佳答案

使用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;

关于delphi - 如何在delphi中检查Tstringlist的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5183754/

10-13 05:32