Кеңестер

Бөлінген жолды жолдар тізіміне қалай салуға болады

Бөлінген жолды жолдар тізіміне қалай салуға болады

Бөлгіш ретінде таңбаны қолдана отырып, жолды жиымға бөлуге тура келетін жағдайлар көп болады. Мысалы, CSV («үтірмен» бөлінген) файлда «Zarko; Gajic;; DelphiGuide» сияқты сызық болуы мүмкін және сіз бұл жолды «Зарко», «Гайич», «» (4) жолға бөлгенді қалайсыз. бос жол) және «DelphiGuide» нүктелі нүктелі таңбаны қолдана отырып, «;» бөлгіш ретінде.

Delphi жолды талдаудың бірнеше әдісін ұсынады, бірақ сіз екеуі де сізге қажет нәрсені жасай алмайтындығын таба аласыз. Мысалы, ExtractStrings RTL әдісі әрдайым бөлгіштер үшін баға белгілерін (жалғыз немесе қосарлы) пайдаланады. Тағы бір тәсіл - бұл пайдалануБөлгіш жәнеБөлінген мәтін TStrings сыныбының қасиеттері - бірақ, өкінішке орай, іске асыруда қате бар («Delphi» ішінде), онда кеңістік таңбасы әрдайым бөлгіш ретінде қолданылады.

Бөлінген жолды талдауға арналған жалғыз шешім - өзіңіздің әдісіңізді жазу:

Бөлінген жол мысалы

~~~~~~~~~~~~~~~~~~~~~~~~~
ParseDelimited процедурасы (const sl: TStrings; const мәні: жол; const бөлгіш: жол);
var
dx: бүтін сан;
ns: жол;
txt: жол;
дельта: бүтін;
баста
дельта: = ұзындық (бөлгіш);
txt: = мән + бөлгіш;
sl.BeginUpdate;
sl.Clear;
тырысу
ал ұзындық (txt)> 0 құрайды
баста
dx: = Pos (бөлгіш, txt);
ns: = Көшіру (txt, 0, dx-1);
sl.Add (ns);
txt: = Көшіру (txt, dx + delta, MaxInt);
Соңы;
ақыры
sl.EndUpdate;
Соңы;
Соңы;
~~~~~~~~~~~~~~~~~~~~~~~~~

Пайдалану (жадынама толтырады):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', ';')