在 Delphi 中,带有CommaText的字符串列表返回逗号和空格,而不仅仅是逗号

kxe2p93d  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(317)

我有一个字符串列表,每个字符串看起来像这样。

2023/01/30,08:47:27, 0. 7.71,CM212-A2,03,Bad head/nozzle detect,380000,Stage No1, Head No2, Nozzle Postion5, Nozzle No0, (Single Lane), PCB ID:                , Bad head/nozzle detectReset

然后,我用逗号文本将该字符串添加到另一个列表中,应该会给出如下结果

2023/01/30
08:47:27
0. 7.71
CM212-A2
03
Bad head/nozzle detect

相反,它返回

2023/01/30
08:47:27
0. 
7.71
CM212-A2
03
Bad 
head/nozzle 
detect

它似乎会创建一个新的字符串为每个逗号像我想要的,但也是创建一个新的字符串为每个空格,我不想要的。
添加代码只是在其需要的情况下。

procedure TForm4.Button1Click(Sender: TObject);
var
datalist : tstringlist;
eventlist : tstringlist;
  i,x: Integer;
  filename : string;
  Event : array[1..200] of TEvent;
begin
datalist := tstringlist.Create;
eventlist := tstringlist.Create;
X := 1;

//get latest file
   filename := getlastmodifiedfilename('C:\Users\tngmorse\Desktop\LockHeads\Win32\Debug\');
//end


datalist.LoadFromFile(filename);

//search for head lockout
for i := 0 to datalist.count - 1 do
begin

  if containstext(datalist[i],'Bad head') then
  begin
    memo1.Lines.Add(datalist[i]);
   // eventlist.Clear;
    eventlist.CommaText := datalist[i];
   // Event[x].Dateofevent := 'today';
    Event[x].Dateofevent := eventlist[0];    //spaces are also breaking it.
    Event[x].Timeofevent := eventlist[1];
    Event[x].Version := eventlist[2];
    Event[x].Machine := Eventlist[3];
    Event[x].EventNumber := Eventlist[4];
    Event[x].EventName := Eventlist[5];
    Event[x].TableNumber := EventList[6];
    Event[x].Table := Eventlist[7];
    Event[x].Head := Eventlist[8];
    Event[x].Nozzle := EventList[9];
    Event[x].NozzleType := Eventlist[10];
    Event[x].Lane := Eventlist[11];
    Event[x].PCBID := Eventlist[12];
    Event[x].Effect := Eventlist[13];

    memo1.Lines.Add('Date: '+Event[x].Dateofevent);
    memo1.Lines.Add('Time: '+Event[x].Timeofevent);
    memo1.Lines.Add('Machine: '+Event[x].Machine);
    memo1.Lines.Add('Event: '+Event[x].EventName);
    memo1.Lines.Add('Table: '+Event[x].Table);
    memo1.Lines.Add('Head: '+Event[x].Head);
    memo1.Lines.Add('Nozzle: '+Event[x].Nozzle);
    memo1.Lines.Add('Status: '+Event[x].Effect);


     x:=x+1;
//break down list by comma
//add to record

  end;

end;

//end

showmessage('lines: '+inttostr(datalist.Count));
datalist.Destroy;

end;
jfewjypa

jfewjypa1#

此行为可由StrictDelimiter属性控制:
如果StrictDelimiter为True,则DelimitedText中的各个字符串仅用Delimiter分隔或用引号括在QuoteChar之间。如果StrictDelimiter为False,则空格和不可打印字符也用作分隔符。
因此,将其设置为True以获得所需的行为。

相关问题