प्रलेखन और आगे निरीक्षण के लिए, मैं सभी एसक्यूएल कथनों को खोजने के लिए कई परियोजनाओं में सभी डीएफएम फाइलों पर 'एक्स्ट्रैक्ट स्ट्रिंग' चलाने की इच्छा रखूंगा। क्या कमांड लाइन टूल्स हैं जो यह कर सकते हैं? डीएफएम फाइलें सभी पाठ प्रारूप में हैं।क्या कोई उपकरण है जो डेल्फी फॉर्म फ़ाइलों से सभी SQL कमांड स्ट्रिंग निकाल सकता है?
उत्तर
यहाँ है फेलिक्स Colibri
यहाँ से एक DFM पार्सर इस
की तरह काम करना के लिए एक दिलचस्प उपकरण है
यह एक दिलचस्प लिंक है, धन्यवाद! – robsoft
आप जिस प्रकार के क्वेरी घटक का उपयोग कर रहे हैं उसके आधार पर, मुझे लगता है कि आप अपने प्रोजेक्ट फ़ोल्डर्स पर कमांड लाइन grep (या कोई अन्य टेक्स्ट-सर्चिंग टूल) का उपयोग करके ऐसा कर सकते हैं। DFM में, सामान्य TQuery एक जैसे घटकों के लिए, आप
SQL.Strings=('select * from mytable')
या संभवतः की तर्ज पर कुछ करने जा रहे हैं (मैं कोई डेल्फी जाँच करने के लिए, घर पर होने की खुशियों सौंपने के लिए है!)
SQL.Text=('select * from mytable')
देखते हुए कि कैसे इन तार, DFM अंदर कई 'पंक्तियों' में फैला सकता है और कैसे वहाँ कई रूप में आप के लिए जाँच करने के लिए आवश्यकता होगी हो सकता है, व्यक्तिगत रूप से मैं डेल्फी के एक छोटे से टुकड़े लिखते हैं क्या करने के लिए दिए गए इस।
मूल विचार होगा; किसी दिए गए निर्देशिका में सभी फ़ाइलों/सबफ़ोल्डर के माध्यम से पुनरावृत्त करें, सभी डीएफएम फ़ाइलों की तलाश करें, और प्रत्येक के लिए, इसे एक TStringList में पढ़ें, किसी भी TQuery (आदि) SQL गुणों में से किसी एक के लिए जांचें, और लिखें परिणाम फ़ाइल में परिणाम (घटक का नाम, फ़ाइल नाम, वास्तविक SQL स्ट्रिंग)। वास्तव में सबसे अधिक एक घंटे या दो से अधिक काम नहीं होना चाहिए।
यदि आपने प्रोसेस संग्रहित किया है, तो आप किसी TQuery-type घटक के अलावा किसी अन्य चीज़ का उपयोग करके कॉल करते हैं, तो आपको पहले डीएफएम के अंदर एक झांक देखना होगा और देखें कि SQL कैसे दिखाई देता है; यह शायद के
CommandText=('exec mysproc :id, :value')
आदि
संपादित तर्ज पर होगा: टिप्पणी में चर्चा के बाद , यहाँ मेरी DFMs में से एक से एक नमूना है,
(other properties) SQL.Strings = ( 'SELECT D.*, ' 'C.DESCRIPTION AS CLASS_DESCRIPTION, ' 'C.CHQ_NUM_THRESHOLD AS CLASS_CHQ_NUM_THRESHOLD,' 'C.CREDIT_LIMIT AS CLASS_CREDIT_LIMIT,' 'A.REF AS ACCOUNT_REF,' 'A.SORT_CODE AS ACCOUNT_SORT_CODE,' 'A.ACCOUNT_NUMBER AS ACCOUNT_ACCOUNT_NUMBER,' 'A.PREFERRED_ACCOUNT AS ACCOUNT_PREFERRED_ACCOUNT' 'FROM ' 'DRAWER_ACCOUNTS A LEFT JOIN DRAWERS D ' 'ON D.REF=A.DRAWER_REF' 'LEFT JOIN REF_DRAWER_CLASSES C' 'ON D.DRAWER_CLASS = C.CLASS_ID' 'WHERE A.SORT_CODE=:PSORT AND A.ACCOUNT_NUMBER=:PACC') (other properties)
तो सब मैं वास्तव में क्या करने की जरूरत, SQL.Strings = (
सा स्थान है, तो लाइन और बाद के सभी लाइनों के बाकी को पढ़ने के लिए, प्रमुख को दूर करने और '
अनुगामी है जब तक मैं एक पंक्ति है कि ')'
में समाप्त होता है के लिए मिलता है - जिस बिंदु पर मैं कर रहा हूँ। जो कुछ भी दिलचस्प एसक्यूएल (और टिप्पणियां) प्रत्येक पंक्ति पर उद्धरण के भीतर निहित हो सकता है, वास्तव में अप्रासंगिक है। आप अपनी रुचि रखने वाली प्रत्येक पंक्ति को पढ़ना चाहते हैं और प्रत्येक पंक्ति पर पहले और अंतिम उद्धरण के बीच टेक्स्ट काट लें। यह काम करना चाहिए क्योंकि मैं नहीं देख सकता कि डेल्फी इसे किसी अन्य तरीके से कैसे स्ट्रीम करेगा, यह संभवतः स्ट्रिंग सामग्री को 'पढ़' नहीं सकता है - यह सिर्फ इस आधार पर काम कर रहा है कि स्ट्रिंगलिस्ट (संभवतः) लाइनों में विभाजित है और प्रत्येक पंक्ति डीएफएम में एक उद्घाटन और समापन '
के साथ सीमित है, और पूरी स्ट्रिंगलिस्ट सामग्री स्वयं को ब्रैकेट की एक जोड़ी के भीतर निहित है।
क्या यह समझ में आता है, या क्या मुझे अभी भी कुछ याद आ रहा है?:-)
एसक्यूएल कमांड में (और) (और टिप्पणियां (सहित (और)) शामिल हो सकती हैं) तो पार्सिंग थोड़ा मुश्किल होगा, क्योंकि) एसक्यूएल स्ट्र को भी समाप्त कर देता है आईएनजी ... और यूनिकोड के बारे में, यदि SQL टेक्स्ट में टिप्पणियों या फ़ील्ड मानों में विशेष वर्ण होते हैं। लेकिन मुझे लगता है कि यह मजेदार और आसान हिस्सा होगा: पी – mjn
बहुत सच्चाई ... लेकिन यदि आप पहले पर पार्सिंग शुरू करते हैं और जब आप जाते हैं तो उद्धरण के कितने स्तर "इन" होते हैं, तो आपको चाहिए अच्छा होने के लिए। दिन के अंत में, डेल्फी डीएफएम पार्सर स्ट्रिंग को समझने में सक्षम होना चाहिए जैसे कि यह एक उद्धरण के साथ शुरू होता है और समाप्त होता है। एसक्यूएल टेक्स्ट में यूनिकोड नहीं हो सकता है जब तक कि डीएफएम फ़ाइल यूनिकोड स्वयं न हो (जब तक कि मुझे डीएफएम में स्ट्रिंग्स के बारे में कुछ याद नहीं आ रहा है!) ताकि आप पहले यूनिकोड फ़ाइल के लिए परीक्षण कर सकें - मेरे पास कुछ कोड है जो कहीं भी फाइल करता है यह देखने के लिए कि यह यूनिकोड है या नहीं। जैसा कि आप कहते हैं, यह मजाक का हिस्सा है! :-) – robsoft
डेल्फी इसके लिए आदर्श नहीं है जब तक कि आप RegExp लाइब्रेरी का उपयोग न करें। मैं डीएफएम को पार्स करने और एसक्यूएल निकालने के लिए एक पर्ल स्क्रिप्ट लिखने की सिफारिश करता हूं। मैंने टीटीएबल/टीवीसी घटकों को डीओए "समकक्ष" में परिवर्तित करने के समान कुछ किया और इसमें फाइलों को संशोधित करने के दौरान पास्क और डीएफएम को सिंक में रखने में शामिल था। नौकरी के लिए सही उपकरण का उपयोग करें। इस मामले में नियमित अभिव्यक्तियों के अच्छे कार्यान्वयन के साथ एक पटकथा भाषा। पर्ल शायद चाय का प्याला न हो लेकिन आपको पाइथन, रूबी जैसे कुछ ढूंढने में सक्षम होना चाहिए? – mcottle
DFM के बाद से नाम = मूल्य प्रारूप में मूल रूप से है, तो आप सिर्फ एक TStringList में लोड कर सकता है, फिर विशिष्ट संपत्ति के नाम में अपने रुचि के लिए देख प्रत्येक पंक्ति के माध्यम से लूप:
var
slDfm : tStringList;
Item : String;
ix : integer;
begin
slDFM := tStringlist.create;
try
slDFM.LoadFromFile(filename);
for ix := 0 to slDfm.Count-1 do
begin
slDfm.Strings[ix] := Trim(slDfm.Strings[ix]);
if SameText(Trim(slDfm.Names[ix]),'CommandText') then
memo1.Lines.Add('"'+Trim(slDfm.ValueFromIndex[ix])+'"');
end;
finally
slDFM.free;
end;
end;
उत्तर के लिए बहुत धन्यवाद! एक और समाधान जो मैं कोशिश करूंगा वह 'निकालना तार' उपकरण है जो "GNU Gettext for Delphi and C++ Builder" में शामिल है।
.po फाइलों में न केवल सभी घटक टेक्स्ट शामिल हैं बल्कि सभी संसाधनों (अन्य स्थान जहां एसक्यूएल कमांड संग्रहीत हैं) शामिल हैं, मूल के संदर्भ (जो पैस या डीएफएम फ़ाइल, कौन सा घटक संपत्ति नाम) के संदर्भ में पूर्ण है और यह है पहले से ही एक बहुत ही सरल "नाम = मूल्य" सूची।
एक पुलिस फाइल .pas फ़ाइलों से सभी SQL.Text और 'एसक्यूएल _... "सभी फ़ाइलों में जैसे नामों के साथ सभी resourcestrings सुलझाने के लिए यह आसान हो जाएगा के साथ।
- 1. क्या कोई डेल्फी लाइब्रेरी है जो किसी प्रोजेक्ट के लिए सभी प्रभावी स्रोत पथ लौटाती है?
- 2. निकाल रहा है SQL सर्वर
- 3. क्या कोई एपीआई या उपकरण है जो सॉफ़्टवेयर अद्यतन को स्वचालित कर सकता है?
- 4. क्या कोई उपकरण है जो डुप्लिकेट इंटरफ़ेस GUID का पता लगाता है?
- 5. क्या एक्सएसएलटी के लिए डॉक्सिजन जैसी कोई उपकरण है?
- 6. क्या कोई SQL सत्यापनकर्ता है जो एकाधिक डेटाबेस सर्वर के विरुद्ध वाक्यविन्यास जांच सकता है?
- 7. क्या सभी कोड फ़ाइलों से सभी अप्रयुक्त आयातों को साफ करने के लिए स्कैला के लिए कोई उपकरण है?
- 8. क्या नियमित अभिव्यक्ति स्ट्रिंग से डुप्लिकेट आइटम निकाल सकती है?
- 9. क्या कोई उपकरण है जो सीएसएस को रेखांकित कर सकता है?
- 10. क्या कोई उपकरण है जो डीओएम संरचना द्वारा एचटीएमएल दस्तावेजों की तुलना कर सकता है?
- 11. क्या कोई वितरित वीसीएस है जो बड़ी फ़ाइलों का प्रबंधन कर सकता है?
- 12. क्या कोई रिफैक्टरिंग टूल है जो समाधान फ़ाइलों में काम करता है?
- 13. क्या कोई बैश कमांड है जो फाइलों की गणना करता है?
- 14. क्या कोई उपकरण है जो xxl में resx स्थानीयकरण रीफैक्टरिंग का समर्थन करता है?
- 15. क्या कोई पर्ल मॉड्यूल है जो यूनिक्स "जो" कमांड के समान काम करता है?
- 16. क्या कोई SQL डेटाबेस है जो समय पर रोलबैक कर सकता है?
- 17. क्या स्प्रिंग फॉर्म कमांड एक मानचित्र हो सकता है?
- 18. डेल्फी 'स्ट्रिंग' अक्षर 255 से अधिक कैसे हो सकता है?
- 19. कैसे आप डेल्फी के खुले उपकरण एपीआई
- 20. क्या कोई 'सभी इंस्टॉल करें' विकल्प है?
- 21. एक दृश्य वेबपृष्ठ संपादन उपकरण जो एएसपीनेट वेब फॉर्म टैग्स का समर्थन कर सकता है
- 22. सी ++ प्रोजेक्ट के लिए कोई भी अच्छा भवन उपकरण, जो प्रतिस्थापित कर सकता है?
- 23. क्या कोई ईटीएल उपकरण है जो रेल मॉडल के साथ एकीकृत करता है?
- 24. क्या कोई फॉर्म बता सकता है कि क्या कोई मोडल विंडो खुलती है?
- 25. आपका पसंदीदा डेल्फी ओपन सोर्स कार्यात्मक परीक्षण उपकरण क्या है?
- 26. क्या कोई ऐसा उपकरण है जो एक एसवीएन रिपोजिटरी को दृष्टि से प्रदर्शित कर सकता है (यानी सुंदर चार्ट)?
- 27. पायथन कोड फ़ाइलों में सभी स्ट्रिंग खोजें
- 28. क्या स्रोत नियंत्रण के लिए कोई विलय उपकरण है जो कोड को समझता है?
- 29. क्या कोई ओपन सोर्स एसक्यूएल सर्वर डीबी तुलना उपकरण है?
- 30. सभी फ़ाइलों और फ़ोल्डरों रिकर्सिवली डेल्फी
हूँ मुझे लगता है करने के लिए एक है, जिसे ठीक "डीएफएम" फ़ाइल एक रिसोर्स फ़ाइल का डेल्फी का संस्करण है? – lexu
@lexu yes उनमें 'फॉर्म', 'फ्रेम' और 'डेटामोड्यूल' के लिए लेआउट और बाध्यकारी जानकारी शामिल है। – mjn
@lexe लेकिन मुझे नहीं पता कि वे तकनीकी रूप से समाप्त होंगे या नहीं द्विआधारी – mjn