Splitte en streng i en dynamisk array

En funksjon som deler en streng i deler adskilt av en substringand returnerer delene i et dynamisk streng rekke splitte en streng i en rekke
Følgende funksjoner split en streng i deler adskilt av en treng og returnere delene i et dynamisk streng rekke: grensesnitt type TStringArray = array of string; funksjonen Split (konst str: string; const separator: string = ','): TStringArray; funksjon AnsiSplit (konst str: string; const separator: string = ','): TStringArray; implementering bruker sysutils; funksjonen Split (konst str: string; const separator: string): TStringArray; //Returnerer en matrise med de delene av "str" ​​adskilt med "separator" var i, n: integer; p, q, s: PChar; begynne SetLength (Resultat, Oppstår (str, separator) 1); p: = PChar (str); s: = PChar (separator); n: = Lengde (separator); i: = 0; gjenta q: = strpos (p, s); hvis q = null deretter q: = StrScan (p, # 0); SetString (Resultat [i], p, q - p); p: = q + n; inc (i); inntil q ^ = # 0; slutt; funksjon AnsiSplit (konst str: string; const separator: string): TStringArray; //Returnerer en matrise med de delene av "str" ​​adskilt med "separator" //ANSI versjon Var i, n: integer; p, q, s: PChar; begynne SetLength (Resultat, AnsiOccurs (str, separator) 1); p: = PChar (str); s: = PChar (separator); n: = Lengde (separator); i: = 0; gjenta q: = AnsiStrPos (p, s); hvis q = null deretter q: = AnsiStrScan (p, # 0); SetString (Resultat [i], p, q - p); p: = q + n; inc (i); inntil q ^ = # 0; end; Eksempel: prosedyre TForm1.Button1Click (Sender: TObject); Var en: TStringArray; jeg: integer; begynne a: = Split ('part1, part2, part3'); for i: = 0 til lengde (a) - en ikke begynne //Vil vise tre dialoger ShowMessage (a [i]); //'Part1', 'part2', 'part3' end; end; Du kan se et eksempel med en StringList i stedet for et dynamisk array i en egen artikkel
.