Jak przeanalizować rozdzielany ciąg na listę ciągów?
Roberto Westbrook / Getty Images
Wiele razy trzeba podzielić a strunowy w an Delphi udostępnia kilka metod parsowania łańcucha, ale może się okazać, że żadna z nich nie robi dokładnie tego, czego potrzebujesz. Na przykład metoda ExtractStrings RTL zawsze używa znaków cudzysłowu (pojedynczych lub podwójnych) jako ograniczników. Innym podejściem jest użycie Ogranicznik i Rozdzielany tekst właściwości klasy TStrings — ale niestety jest błąd w implementacji ('wewnątrz' Delphi), gdzie znak spacji jest zawsze używany jako ogranicznik. Jedynym rozwiązaniem na parsowanie oddzielonego ciągu jest napisanie własnej metody: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Użycie (wypełnia Notatkę1) :
Przykład ciągu rozdzielanego
procedura ParseDelimited(const sl : TStrings; const value : string; const delimiter : string) ;
był
dx : liczba całkowita;
ns : ciąg;
txt : ciąg;
delta : liczba całkowita;
zaczynać
delta := Długość(ogranicznik) ;
txt := wartość + ogranicznik;
sl.Rozpocznij aktualizację;
sl.Wyczyść;
próbować
podczas gdy długość (txt) > 0 do
zaczynać
dx := Poz(ogranicznik, txt) ;
ns := Kopiuj(txt,0,dx-1);
sl.Dodaj(ns) ;
txt := Kopiuj(txt,dx+delta,MaxInt) ;
koniec;
wreszcie
sl.EndUpdate;
koniec;
koniec;
~~~~~~~~~~~~~~~~~~~~~~~~~~~
ParseDelimited(Memo1.lines,'Zarko;Gajic;;DelphiGuide',';')