我有一个字符串列表,每个字符串看起来像这样。
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;
1条答案
按热度按时间jfewjypa1#
此行为可由
StrictDelimiter
属性控制:如果
StrictDelimiter
为True,则DelimitedText
中的各个字符串仅用Delimiter
分隔或用引号括在QuoteChar
之间。如果StrictDelimiter
为False,则空格和不可打印字符也用作分隔符。因此,将其设置为
True
以获得所需的行为。