
We are searching data for your request:
Upon completion, a link will appear to access the found materials.
Sokszor el kell osztani egy karakterláncot karakterláncok tömbjére, ha karaktert választ el elválasztóként. Például, egy CSV ("vesszővel elválasztott") fájlnak lehet egy sor, például: "Zarko; Gajic ;; DelphiGuide", és azt akarja, hogy ezt a sort 4 sorra (karakterláncokra) "Zarko", "Gajic", "" ( üres karakterlánc) és a "DelphiGuide" pontosvesszős karaktert használva ";" mint határoló.
A Delphi számos módszert kínál egy karakterlánc elemzésére, de előfordulhat, hogy egyik sem teszi pontosan azt, amire szüksége van. Például az ExtractStrings RTL módszer mindig idézőjeleket (egyszeri vagy dupla) használ a határolókra. Egy másik megközelítés adelimiter ésDelimitedText A TStrings osztály tulajdonságai, de sajnos van egy hiba a megvalósításban ("Delphi" belül), ahol a szóköz karakter mindig elválasztóként kerül felhasználásra.
Az elválasztott karakterlánc elemzésének egyetlen megoldása a saját módszerének írása:
Határozott karakterlánc példa
~~~~~~~~~~~~~~~~~~~~~~~~~
ParseDelimited eljárás (const sl: TStrings; const érték: string; const elválasztó: string);
var
dx: egész szám;
ns: húr;
txt: húr;
delta: egész szám;
kezdődik
delta: = hossz (elválasztó);
txt: = érték + elválasztó;
sl.BeginUpdate;
sl.Clear;
próbálja meg
míg a hossz (txt)> 0 nem
kezdődik
dx: = Pos (határoló, txt);
ns: = Másolás (txt, 0, dx-1);
sl.Add (ns);
txt: = Másolás (txt, dx + delta, MaxInt);
végén;
végül
sl.EndUpdate;
végén;
végén;
~~~~~~~~~~~~~~~~~~~~~~~~~
Használat (kitölti a Memo1-et):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', ';')
Szerintem nincs igazad. Biztos vagyok benne. Írj PM-ben, megbeszéljük.
Csatlakozom. So happens. Kommunikálhatunk ezen a témán. Itt vagy PM -ben.
Jaj! Sajnálatos módon!
As the specialist, I can render the help.
Azt hiszem, hibát követsz el. Meg tudom védeni az álláspontomat. Küldjön e -mailt nekem a miniszterelnöknél, beszélünk.