Razčleni vrvico v seznam vrvic (Delphi)

Obstaja velikokrat, ko morate deliti a vrvica v an matrika nizov z uporabo znaka kot ločevalca. Na primer, datoteka CSV (ločena z vejico) ima lahko vrstico kot "Žarko; Gajić;; DelphiGuide "in želite, da se ta vrstica razčleni v 4 vrstice (strune)" Zarko "," Gajic "," "(prazen niz) in" DelphiGuide "z uporabo črke s podpičjem"; "kot ločilo.

Delphi ponuja več načinov za razčlenitev niza, vendar boste morda ugotovili, da nobeden ne naredi točno tistega, kar potrebujete. Na primer, metoda RTL ExtractStrings za ločevalce vedno uporablja znake citata (enojni ali dvojni). Drug pristop je uporabaDelititer inDelimitedText lastnosti razreda TStrings - a na žalost je pri izvedbi ("znotraj" Delphi) napaka, kjer se vesoljski znak vedno uporablja kot ločitev.

~~~~~~~~~~~~~~~~~~~~~~~~~
postopek ParseDelimited (const sl: TStrings; vrednost const: niz; omejitev const: string);
var
dx: celo število;
ns: niz;
txt: niz;
delta: celo število;
začeti
delta: = dolžina (ločilo);
txt: = vrednost + ločilo;
sl StartUpdate;
sl Jasno;

instagram viewer

poskusi
medtem ko je dolžina (txt)> 0
začeti
dx: = Pos (ločilo, txt);
ns: = Kopiraj (txt, 0, dx-1);
sl Dodaj (ns);
txt: = Kopiraj (txt, dx + delta, MaxInt);
konec;
končno
sl EndUpdate;
konec;
konec;
~~~~~~~~~~~~~~~~~~~~~~~~~

Uporaba (izpolni Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajić;; DelphiGuide ','; ')

instagram story viewer