
We are searching data for your request:
Upon completion, a link will appear to access the found materials.
Terdapat banyak kali apabila anda perlu memecah rentetan kepada rentetan rentetan dengan menggunakan watak sebagai pemisah. Contohnya, fail CSV ("koma" dipisahkan) mungkin mempunyai garis seperti "Zarko; Gajic; DelphiGuide" dan anda ingin baris ini dihuburkan ke dalam 4 baris (rentetan) "Zarko", "Gajic", "" ( tali kosong) dan "DelphiGuide" menggunakan aksara separa titik ";" sebagai pembatas.
Delphi menyediakan beberapa kaedah untuk mengurai rentetan, tetapi anda mungkin mendapati bahawa tiada siapa yang melakukan apa yang anda perlukan. Sebagai contoh, kaedah ExtractStrings RTL sentiasa menggunakan aksara petikan (tunggal atau berganda) untuk pembatas. Pendekatan lain adalah menggunakanDelimiter danDelimitedText sifat kelas TStrings-tetapi malangnya terdapat bug dalam pelaksanaan ("dalam" Delphi) di mana watak ruang selalu digunakan sebagai pembatas.
Satu-satunya penyelesaian untuk menghuraikan rentetan yang dibatasi adalah untuk menulis satu kaedah anda sendiri:
Contoh Rentetan Delimited
~~~~~~~~~~~~~~~~~~~~~~~~~
prosedur ParseDelimited (const sl: TStrings; const value: string; delimiter: string);
var
dx: integer;
ns: string;
txt: string;
delta: integer;
mulakan
delta: = Panjang (delimiter);
txt: = nilai + pemisah;
sl.BeginUpdate;
sl.Clear;
cuba
manakala Panjang (txt)> 0 lakukan
mulakan
dx: = Pos (delimiter, txt);
ns: = Salin (txt, 0, dx-1);
sl.Add (ns);
txt: = Salin (txt, dx + delta, MaxInt);
akhir;
akhirnya
sl.EndUpdate;
akhir;
akhir;
~~~~~~~~~~~~~~~~~~~~~~~~~
Penggunaan (mengisi dalam Memo1):
ParseDelimited (Memo1.lines, 'Zarko; Gajic ;; DelphiGuide', ';')
Saya percaya bahawa anda salah. Saya boleh membuktikannya. E -mel saya di PM.
Maksud saya awak menipu.
Tak mungkin!
So behold!
What very good question
Anda telah tiba di tempat kejadian. Saya fikir ini adalah idea yang sangat bagus. Saya bersetuju sepenuhnya dengan anda.
Competent point of view, it's entertaining ...