Tuesday, November 5, 2019

Parse a Delimited String Into a String List (Delphi)

Parse a Delimited String Into a String List (Delphi) There are many times when you need to split a string into an array of strings by using a character as a separator. For example, a CSV (comma separated) file might have a line like Zarko;Gajic;;DelphiGuide and you want this line to be parsed into 4 lines (strings) Zarko, Gajic, (empty string) and DelphiGuide using the semi-colon character ; as a delimiter. Delphi provides several methods to parse a string, but you might find that neither one does exactly what you need. For example, the ExtractStrings RTL method always uses quote characters (single or double) for delimiters. Another approach is to use the ​Delimiter and ​DelimitedText properties of the TStrings class- but unfortunately, there is a bug in the implementation (inside Delphi) where the space character is always used as a delimiter. The only solution to parsing a delimited string is to write a method of your own: Delimited String Example ~~~~~~~~~~~~~~~~~~~~~~~~~procedure ParseDelimited(const sl : TStrings; const value : string; const delimiter : string) ;vardx : integer;ns : string;txt : string;delta : integer;begindelta : Length(delimiter) ;txt : value delimiter;sl.BeginUpdate;sl.Clear;trywhile Length(txt) 0 dobegindx : Pos(delimiter, txt) ;ns : Copy(txt,0,dx-1) ;sl.Add(ns) ;txt : Copy(txt,dxdelta,MaxInt) ;end;finallysl.EndUpdate;end;end;~~~~~~~~~~~~~~~~~~~~~~~~~ Usage (fills in Memo1) :ParseDelimited(Memo1.lines,Zarko;Gajic;;DelphiGuide,;)

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.