Sõeluge eraldatud keel stringide loendisse (Delphi)

On palju kordi, kui peate jagama a nöör sisse massiiv stringide kasutamine, kasutades eraldajana märki. Näiteks võib CSV-failis (eraldada "komaga") rida nagu "Zarko; Gajic;; DelphiGuide "ja soovite, et see rida parsitataks 4 rida (stringid)" Zarko "," Gajic "," "(tühi string) ja" DelphiGuide ", kasutades poolkäärsümbolit"; "eraldajana.

Delphi pakub stringi sõelumiseks mitmeid meetodeid, kuid võite leida, et kumbki ei tee täpselt seda, mida vajate. Näiteks kasutab ExtractStrings RTL piiritlejate jaoks alati jutumärke (ühe- või kahekordseid). Teine lähenemisviis on kasutadaEraldaja jaLõpetatud tekst TStrings-klassi omadused - kuid paraku on viga (Delphi "sees"), kus tühikut kasutatakse alati eraldajana.

~~~~~~~~~~~~~~~~~~~~~~~~~
protseduur ParseDelimited (jätkub sl: TStrings; const väärtus: string; const eraldaja: string);
var
dx: täisarv;
ns: nöör;
txt: string;
delta: täisarv;
alustada
delta: = pikkus (eraldaja);
txt: = väärtus + eraldaja;
sl. BeginUpdate;
sl. Selge;
proovida
samal ajal kui pikkus (txt)> 0 teha

instagram viewer

alustada
dx: = Pos (eraldaja, txt);
ns: = kopeerimine (txt, 0, dx-1);
sl. Lisage (ns);
txt: = Kopeeri (txt, dx + delta, MaxInt);
lõpp;
lõpuks
sl. EndUpdate;
lõpp;
lõpp;
~~~~~~~~~~~~~~~~~~~~~~~~~

Kasutamine (täidab Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajic;; DelphiGuide ','; ')

instagram story viewer