
We are searching data for your request:
Upon completion, a link will appear to access the found materials.
Monta kertaa sinun on jaettava merkkijono merkkijonojoukkoon käyttämällä merkkiä erottimena. Esimerkiksi CSV-tiedostossa ("pilkku" erotettu) voi olla rivi kuten "Zarko; Gajic ;; DelphiGuide" ja haluat, että tämä rivi jäsentään 4 riviksi (merkkijonoiksi) "Zarko", "Gajic", "" ( tyhjä merkkijono) ja "DelphiGuide" käyttämällä puolipistettä ";" erottimena.
Delphi tarjoaa useita menetelmiä merkkijonon jäsentämiseksi, mutta saatat huomata, että kumpikaan ei tee tarkalleen mitä tarvitset. Esimerkiksi ExtractStrings RTL -menetelmä käyttää rajoittimiin aina lainausmerkkejä (yksi tai kaksinkertainen). Toinen tapa on käyttäädelimiter jaDelimitedText TStrings-luokan ominaisuudet, mutta valitettavasti toteutuksessa on virhe ("Delphin sisällä"), jossa välilyöntiä käytetään aina erottimena.
Ainoa ratkaisu erotetun merkkijonon jäsentämiseen on kirjoittaa oma menetelmä:
Rajallinen merkkijono-esimerkki
~~~~~~~~~~~~~~~~~~~~~~~~~
menettely ParseDelimited (const sl: TStrings; const arvo: merkkijono; const erotin: merkkijono);
var
dx: kokonaisluku;
ns: merkkijono;
txt: merkkijono;
delta: kokonaisluku;
alkaa
delta: = Pituus (erotin);
txt: = arvo + erotin;
sl.BeginUpdate;
sl.Clear;
yrittää
kun taas Pituus (txt)> 0 tehdä
alkaa
dx: = Pos (erotin, txt);
ns: = Kopio (txt, 0, dx-1);
sl.Lisä (ns);
txt: = Kopioi (txt, dx + delta, MaxInt);
end;
vihdoin
sl.EndUpdate;
end;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~
Käyttö (täyttää Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', '')
Varmasti. Se oli ja kanssani. Voimme kommunikoida tästä aiheesta.
Understandably, thank you for your assistance in this matter.
Mitkä ovat sinun päässäsi?