Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在delphi中检查Tstringlist的长度_Delphi - Fatal编程技术网

如何在delphi中检查Tstringlist的长度

如何在delphi中检查Tstringlist的长度,delphi,Delphi,这就是我想做的。我有一个叫Tstringlist的名字。如果名称的格式为DOE、JOHN、NMI,我希望它将名称拆分为3个不同的字符串。 但问题是,如果没有中间首字母怎么办。或者名字。就像它可能只是DOE一样,那么最后两行是不允许的。程序崩溃了。最好的解决方案是什么 var ptname, physname: Tstringlist; if pos(',',Msg.Grp2[0].ObsReq[0].OrderingProviderFamilyName) > 0 then // spli

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

除了David的好解决方案之外,拥有一个完全填充的CSV会更干净。如果缺少元素,则只有逗号。如果是DOE,那么它仍然可以分裂,而不必到处乱搞。@Chris:David?大卫是谁?哈P