एक स्ट्रिंग सूची (डेल्फी) में एक सीमांकित स्ट्रिंग पार्स

कई बार जब आपको विभाजित करने की आवश्यकता होती है तो ए तार एक में सरणी एक विभाजक के रूप में एक चरित्र का उपयोग करके तार। उदाहरण के लिए, एक CSV ("अल्पविराम" अलग) फ़ाइल में "Zarko" जैसी रेखा हो सकती है; Gajic;; डेल्फीगाइड "और आप चाहते हैं कि यह रेखा 4 लाइनों (स्ट्रिंग्स)" ज़ारको "," गजिक "," "(खाली स्ट्रिंग) और" डेल्फीगाइड "को अर्ध-औपनिवेशिक चरित्र का उपयोग करके" "एक सीमांकक के रूप में प्रस्तुत किया जाए।

डेल्फी एक स्ट्रिंग को पार्स करने के लिए कई तरीके प्रदान करता है, लेकिन आप पा सकते हैं कि न तो किसी को वास्तव में आपकी आवश्यकता है। उदाहरण के लिए, एक्स्ट्रेम्स स्प्रिंग्स RTL विधि हमेशा सीमांकक (एकल या डबल) का उपयोग करता है। एक अन्य दृष्टिकोण का उपयोग करना हैसीमान्तक तथाDelimitedText TStrings वर्ग के गुण-लेकिन दुर्भाग्य से, कार्यान्वयन में एक बग है ("अंदर" डेल्फी) जहां अंतरिक्ष चरित्र हमेशा एक सीमांकक के रूप में उपयोग किया जाता है।

~~~~~~~~~~~~~~~~~~~~~~~~~
प्रक्रिया ParseDelimited (कॉन्स्टेबल स्ल: टीस्ट्रेस; const मूल्य: स्ट्रिंग; const delimiter: string);
वर
dx: पूर्णांक;
ns: स्ट्रिंग;
txt: स्ट्रिंग;

instagram viewer

डेल्टा: पूर्णांक;
शुरू
डेल्टा: = लंबाई (सीमांकक);
txt: = value + delimiter;
sl। BeginUpdate;
sl। स्पष्ट;
प्रयत्न
जबकि लंबाई (txt)> 0 करते हैं
शुरू
dx: = Pos (सीमांकक, txt);
ns: = कॉपी (txt, 0, dx-1);
sl। जोड़ें (एन एस);
txt: = copy (txt, dx + delta, MaxInt);
समाप्त;
आखिरकार
sl। EndUpdate;
समाप्त;
समाप्त;
~~~~~~~~~~~~~~~~~~~~~~~~~

उपयोग (मेमो 1 में भरता है):
ParseDelimited (मेमो1.lines, 'जरको; Gajic;; DelphiGuide ','; ')

instagram story viewer