Maslahatlar

Belgilangan satrni satrlar ro'yxatiga qanday ulash mumkin

Belgilangan satrni satrlar ro'yxatiga qanday ulash mumkin

Belgini ajratuvchi sifatida ishlatib, simlarni qatorlar qatoriga bo'lish kerak bo'lgan holatlar ko'p uchraydi. Masalan, CSV ("vergul" ajratilgan) faylda "Zarko; Gayic;; DelphiGuide" kabi chiziq bo'lishi mumkin va siz ushbu chiziqni 4 ta satrga ajratishni xohlaysiz "Zarko", "Gayjik", "" (( bo'sh satr) va "DelphiGuide" belgilari yordamida vergul ajratuvchi sifatida.

Delphi satrni tahlil qilish uchun bir nechta usullarni taqdim etadi, ammo siz ikkalasi ham kerakli narsani aniqlay olmasligi mumkin. Masalan, ExtractStrings RTL usuli har doim ajratuvchilar uchun kotirovka belgilaridan (yakka yoki qo'shaloq) foydalanadi. Yana bir yondashuv - bu foydalanishAjratuvchi vaDelimitedText TStrings klassining xususiyatlari - lekin afsuski, amalga oshirishda xato mavjud ("Delphi ichida"), bu erda kosmik belgi har doim ajratuvchi sifatida ishlatiladi.

Ajratilgan satrni sintaktik tahlil qilishning yagona yo'li bu o'zingizning usulingizni yozishdir:

Ajratilgan satr namunasi

~~~~~~~~~~~~~~~~~~~~~~~~~
protsedura ParseDelimited (const sl: TStrings; const qiymati: satr; const ajratuvchi: satr);
var
dx: butun son;
ns: satr;
txt: satr;
delta: butun son;
boshlash
delta: = uzunlik (ajratuvchi);
txt: = qiymat + ajratuvchi;
sl.BeginUpdate;
sl.Clear;
harakat qilib ko'ring
uzunligi (txt)> 0 bajarilganda
boshlash
dx: = Pos (ajratuvchi, txt);
ns: = Nusxalash (txt, 0, dx-1);
sl.Add (ns);
txt: = Nusxalash (txt, dx + delta, MaxInt);
oxiri;
nihoyat
sl.EndUpdate;
oxiri;
oxiri;
~~~~~~~~~~~~~~~~~~~~~~~~~

Foydalanish (Memo1 to'ldiradi):
ParseDelimited (Memo1.lines, 'Zarko; Gayic;; DelphiGuide', ';')