TMemo.Lines
, TListBox.Items
, TComboBox.Items
, आदि; सभी को TStrings
के रूप में घोषित किया गया है। सावधान रहें, संपत्ति के बारे में बात कर रहे हैं! आंतरिक निर्मित प्रकार TMemoStrings
, TListBoxStrings
और TComboBoxStrings
क्रमशः TStrings
के सभी वंशज हैं और सभी भंडारण के तरीके में भिन्न हैं।
और क्यों? विनिमयशीलता और अंतःक्रियाशीलता के लिए। इसलिए हर TStrings
-descendant एक ही गुण है, और इसलिए आप कर सकते हैं:
Memo1.Lines := ListBox1.Items;
का उपयोग कैसे करें? खैर, TStrings
TMemo.Lines
जैसी संपत्ति ठीक काम करती है। आप संपत्ति पर स्ट्रिंग्स (और ऑब्जेक्ट्स) को जोड़, हटा, बदल, नवीनीकृत और साफ़ कर सकते हैं, क्योंकि आंतरिक रूप से यह TMemoStrings
है जो इस सभी बातचीत को लागू करता है। घोषणा <> कार्यान्वयन।
लेकिन जब आप कोई विशेष हैंडलिंग चाहते हैं, उदा। सॉर्टिंग की तरह TStringList
प्रदान करता है, तो आपको सहायता चाहिए। आप अपने टाइपकास्ट नहीं कर सकते और न ही एक TStringList
करने के लिए एक TMemo.Lines
कनवर्ट करते हैं, क्योंकि यह एक नहीं है, लेकिन इसके बजाय आप इस विशेष प्रसंस्करण के लिए एक मध्यवर्ती वस्तु बनाने के लिए की जरूरत है:
var
Temp: TStringList;
begin
Temp := TStringList.Create;
try
Temp.Assign(Memo1.Lines);
Temp.Sort;
Memo1.Lines.Assign(Temp);
finally
Temp.Free;
end;
end;
'TMemo.Lines है TStringList = FALSE'। असल में वास्तविक वस्तु जो इसके पीछे है वह विंडोज एपीआई के चारों ओर एक रैपर है। भंडारण विंडोज ईडीआईटी नियंत्रण द्वारा आयोजित किया जाता है जो 'टीएमईओ' लागू करता है। "क्या इसे इसके साथ काम करने से पहले इसे TStringList में परिवर्तित करना चाहिए?" नहीं, आप ऐसा क्यों करना चाहते हैं? –
टीएसट्रिंग्स एक कम "अनुबंध" है जो डेवलपर के लिए अधिक लचीलापन की अनुमति देता है। आप किसी भी वर्ग से बातचीत कर सकते हैं जो टीएसट्रिंग्स अमूर्त वर्ग लागू करता है। – Simon