क्या कोई मुझे कुछ सरल कोड दे सकता है जो मुझे एक ज्ञापन में एक साधारण स्ट्रिंग को खोजने की क्षमता प्रदान करेगा और इसे मिलने के बाद ज्ञापन में हाइलाइट किया गया है?डेल्फी में एक ज्ञापन के माध्यम से खोजें?
उत्तर
function TForm1.FindText(const aPatternToFind: String):Boolean;
var
p: Integer;
begin
p := pos(aPatternToFind, Memo1.Text);
Result := (p > 0);
if Result then
begin
Memo1.SelStart := p;
Memo1.SelLength := Length(aPatternToFind);
Memo1.SetFocus; // necessary so highlight is visible
end;
end;
यदि वर्डवाप सत्य है तो यह लाइनों में नहीं खोजता है।
यह खोज दस्तावेज़ रैप, केस (इन) संवेदनशील खोज और कर्सर स्थिति से खोज करने की अनुमति देती है।
type
TSearchOption = (soIgnoreCase, soFromStart, soWrap);
TSearchOptions = set of TSearchOption;
function SearchText(
Control: TCustomEdit;
Search: string;
SearchOptions: TSearchOptions): Boolean;
var
Text: string;
Index: Integer;
begin
if soIgnoreCase in SearchOptions then
begin
Search := UpperCase(Search);
Text := UpperCase(Control.Text);
end
else
Text := Control.Text;
Index := 0;
if not (soFromStart in SearchOptions) then
Index := PosEx(Search, Text,
Control.SelStart + Control.SelLength + 1);
if (Index = 0) and
((soFromStart in SearchOptions) or
(soWrap in SearchOptions)) then
Index := PosEx(Search, Text, 1);
Result := Index > 0;
if Result then
begin
Control.SelStart := Index - 1;
Control.SelLength := Length(Search);
end;
end;
आप HideSelection = ज्ञापन चयन भले ही ज्ञापन ध्यान केंद्रित नहीं कर रहा है दिखाने के लिए पर झूठी सेट कर सकते हैं।
इस तरहउपयोग:
SearchText(Memo1, Edit1.Text, []);
खोज संपादन के साथ-साथ देता है।
अपरकेस का उपयोग करके आप वांछित परिणाम नहीं दे सकते हैं, उदा। फ्रांसीसी में, ऊपरी केस के पात्रों का उच्चारण नहीं हो सकता है जबकि निचले केस वर्णों में एक हो सकता है (यह कनाडाई फ्रांसीसी से अलग है, जहां ऊपरी केस वर्णों को भी उच्चारण किया जा सकता है)। इसलिए, इस मामले में लोअरकेस का उपयोग बेहतर परिणाम देगा। – dummzeuch
खैर, उच्चारण पत्र और असंतुलित पत्र दो अलग-अलग अक्षर हैं, है ना? फ्रांसीसी शब्द, जब अपरकेस में परिवर्तित किया जाता है, तो प्राइवके में दिखाया जाएगा, लोअरकेस में यह निजी होगा। दूसरी ओर, अपरकेस अक्षर ए को या तो परिवर्तित नहीं किया गया है, इसलिए मुझे नहीं पता कि यह खोज परिणामों को कैसे प्रभावित करेगा। हालांकि मुझे यह स्वीकार करना होगा कि मैं डेल्फी 7 में इसका परीक्षण कर रहा हूं। यदि आपके डेल्फी में यूनिकोड या लोकेल सेटिंग्स का संभावित उपयोग लोअरकेस का उपयोग करते समय बेहतर परिणामों में पैदा होता है, तो कृपया करें। – GolezTrol
GolezTrol: छुपा चयन टिप के लिए धन्यवाद! – RobertFrank
- 1. डेल्फी में ऑटोस्क्रोलिंग ज्ञापन
- 2. पूरी परियोजना के माध्यम से खोजें
- 3. जावास्क्रिप्ट में किसी सरणी के माध्यम से कैसे खोजें?
- 4. केकफ़्पी में विदेशी कुंजी के माध्यम से डेटा कैसे खोजें?
- 5. डेल्फी: रिकॉर्ड में बाइट्स के माध्यम से लूप
- 6. डेल्फी 2010 में अनुक्रमित संपत्ति के माध्यम से Iterate
- 7. डेल्फी में पाठ फ़ाइल से पढ़ें 2009
- 8. वीबीए कोड फाइलों के माध्यम से कैसे खोजें
- 9. एपीआई क्वेरी के माध्यम से Instagram कैसे खोजें?
- 10. रिकर्सिव फाइबोनैकी ज्ञापन
- 11. ज्ञापन आईओ समारोह?
- 12. ज्ञापन, पुनरावर्ती फैक्टोरियल समारोह?
- 13. जावास्क्रिप्ट ज्ञापन स्पष्टीकरण?
- 14. रिवर्स एक स्ट्रिंग में खोजें
- 15. जीएचसी हास्केल में स्वचालित रूप से ज्ञापन कब होता है?
- 16. आप हास्केल में एक सामान्य ज्ञापन फ़ंक्शन कैसे करते हैं?
- 17. ज्ञापन के लिए कार्यात्मक भाषाएं और समर्थन
- 18. PHP में पीडीओ के माध्यम से मैं एक MySQL क्वेरी के माध्यम से कैसे लूप करूं?
- 19. सभी क्रमपरिवर्तनों के माध्यम से एक समय में एक स्वैप
- 20. एक्रोबैट रीडर में पीडीएफ कैसे खोजें और पैरामीटर के माध्यम से किसी निश्चित पृष्ठ पर जाएं?
- 21. एक स्थानीय थ्रेड के माध्यम से एक अन्य थ्रेड के माध्यम से, यह संभव है कि
- 22. पाइथन के माध्यम से किसी फ़ोल्डर में सभी फ़ाइलों में एक खोज-और-प्रतिस्थापन करें?
- 23. डेल्फी 2010 धागे
- 24. डेल्फी 3 से डेल्फी 2010
- 25. एक निर्देशिका के माध्यम से लूपिंग
- 26. जेएनआई के माध्यम से एक अलग थ्रेड
- 27. एक चेकबॉक्स सूची के माध्यम से लूप
- 28. जावा में ज्ञापन के लिए विभिन्न तकनीकें क्या हैं?
- 29. एक सी सरणी के माध्यम से Iterate
- 30. पथ के माध्यम से एक रोबोट गाइडिंग
'TStrings.Strings' की बजाय' TStrings.Text' में खोजना बहुत महंगा है। तथ्य में 2 × एन। –
@ user205376 - आप ऐसा क्यों कहते हैं? TStrings.Text एक एकल स्ट्रिंग है जिस पर मुझे लगता है कि pos() तेज़ होगा। जैसा कि आप सुझाव देते हैं, खोज रहे हैं, TStrings.Strings में प्रत्येक स्ट्रिंग तक पहुंचने के लिए सबस्क्रिप्ट शामिल होंगे। वह, आईएमओ, राय धीमा हो जाएगा और कोई अतिरिक्त कार्यक्षमता प्रदान नहीं करेगा जो pos() नहीं करता है। (और, पाया गया पैटर्न को हाइलाइट करने के लिए इसे कुछ मुश्किल कोड की आवश्यकता होगी) आप ऐसा क्यों नहीं सोचते? – RobertFrank
खेल के लिए थोड़ा देर हो चुकी है, लेकिन उपर्युक्त के लिए, यह कार्यान्वयन पर निर्भर करता है। सभी टीएसट्रिंग्स सार के बाद। Memo.Lines.Text (= TMemoStrings.Text) को एक एकल एपीआई कॉल का उपयोग करके ज्ञापन का पाठ मिलता है, जबकि एक TStringList अलग स्ट्रिंग और TStringList स्टोर करता है। पाठ उन्हें प्रत्येक अनुरोध पर एक स्ट्रिंग में जोड़ता है (जो अक्सर कॉल करने से भी तेज़ होता है एपीआई, बीटीडब्ल्यू)। उत्तर Memo1.Text का उपयोग करता है जो मुझे लगता है कि किसी भी टीएसट्रिंग्स वंशज को छोड़ देता है और सीधे मेमो के हैंडल पर कुछ GetText एपीआई को कॉल करता है। – GolezTrol