डेल्फी, फायरमँकी, सर्व-प्रवेश आणि इतर सुखद आश्चर्य. डेल्फी, फायरमँकी, सर्व-प्रवेश आणि इतर सुखद आश्चर्ये काय विचारात घ्यावे

Viber बाहेर 31.10.2021
Viber बाहेर

फायरमँकी हा शब्द कमी-अधिक प्रमाणात परिचित झाल्यापासून पुरेसा वेळ निघून गेला आहे, जर सर्व विकसकांसाठी नाही, तर किमान डेल्फी वापरणाऱ्यांसाठी. यादरम्यान, फायरमँकीवरील पुस्तके, फायरमँकीवरील लेख आणि फायरमँकी बद्दलच्या नोंदी असंख्य ब्लॉगमध्ये दिसू लागल्या. हे सर्व वाचणे खूप मनोरंजक आहे. परंतु कोणताही सिद्धांत सरावाची जागा घेऊ शकत नाही. आणि मला, आधीच्या अनेकांप्रमाणेच, FireMonkey वापरून काहीतरी लिहिण्याचा प्रयत्न करण्याची खाज सुटली.

तथापि, एक समस्या उद्भवली. काही कारणास्तव, मी ठरवले की मला फक्त काही फार क्लिष्ट नसलेले कार्य प्रकल्प राबवायचे आहेत.

हे माझ्यासाठी का त्रासदायक ठरले हे स्पष्ट करण्यासाठी, काही (मला लेखन, गीतासारखे वाटते) विषयांतर आवश्यक असेल. एक विकसक म्हणून माझ्या भूतकाळात एक सहल. डेल्फी वापरून प्रोग्रॅमिंगवरील माझी काही मते स्पष्ट करा.

मला असे म्हणायचे आहे की मी विंडोज 3.1 वर डेल्फी वापरण्यास सुरुवात केली, म्हणजेच पहिल्या आवृत्तीपासून. आणि तेव्हापासून मी VCL चा अभ्यास करत आहे. मी त्याचा मूळ अभ्यास केला आहे, म्हणून बोलायचे आहे. मी पाहिले, प्रवेश केला, स्त्रोत शोधले. पुन्हा पुन्हा.

हे ज्ञात आहे की डेल्फीसह पाठवलेल्या घटकांच्या संचामध्ये अनेक वेळा तृतीय पक्ष घटक समाविष्ट होते जे VCL मधील अंतर भरण्याच्या उद्देशाने होते आणि जे कदाचित समाविष्ट होण्यापूर्वी काही प्रकारच्या गुणवत्ता नियंत्रणातून गेले होते. यातील काही घटकांचा पुरवठा आजही सुरू आहे. तीच इंडी घ्या. मला कोणाचेही मन दुखवायचे नाही, हे पूर्णपणे माझे वैयक्तिक मत आहे, जे एक घटक विकसक म्हणून स्वतःलाही लागू होते: एकाही संचाचा इतका खोलवर विचार केला गेला नाही आणि प्रचंड आणि वैविध्यपूर्ण व्हीसीएल इतका चांगला अंमलात आणला गेला नाही. नाही, मी अंतिम सत्य असल्याचे भासवत नाही आणि अर्थातच, व्हीसीएलमध्येच अनेक त्रुटी आहेत, असे निर्णय आहेत ज्यामुळे गैरसमज निर्माण होतात, नाकारतात आणि ज्यांच्याशी तुम्ही असहमत होऊ इच्छिता. पण माझ्यावर नेहमीच एका विशिष्ट शैलीची छाप होती. माझ्या मते, व्हीसीएलमध्ये एक सुंदर आणि मजबूत कोर आहे जो संपूर्ण डेल्फी डिझाइनला सपोर्ट करतो आणि ज्याभोवती सॉफ्टवेअर इन्फ्रास्ट्रक्चर आणि डेव्हलपर कम्युनिटी दोन्ही तयार केले जातात. माझ्या मते, डेल्फीच्या मृत्यूबद्दलच्या अफवा अजूनही अफवा आहेत, हे व्हीसीएलचे मोठ्या प्रमाणात आभार आहे. आणि जेव्हा VCL वितरणामध्ये तृतीय-पक्ष विकासकांचे घटक समाविष्ट होते, तेव्हा ते लगेच लक्षात येण्यासारखे होते, ते वेगळे होते.

पण मग तो क्षण येतो आणि मी ऐकतो की VCL हे तंत्रज्ञान जुने आहे. एक तंत्रज्ञान जे भूतकाळात सोडले पाहिजे. विकसकांनी त्यांचे सर्व नवीन प्रकल्प FireMonkey वर लागू केले पाहिजेत आणि जुन्या प्रकल्पांसाठी... ते नवीन ट्रॅकवर हस्तांतरित करणे चांगले होईल. FireMonkey सर्वत्र, कधीही. आणि मी हे वेगवेगळ्या स्त्रोतांकडून ऐकतो. आणि जोरदार चिकाटीने. नाही, VCL कोणीही मारत नाही. तो आमच्यासोबत राहतो. पण तो आता पहिल्या क्रमांकावर नाही. तो बॅकअप बनला पाहिजे. उत्पादनाच्या भवितव्याबद्दल काय बोलले जात आहे हे किमान मला कसे समजते.

तत्वतः, मला ही परिस्थिती समजते. आम्ही मल्टी-प्लॅटफॉर्म आणि सर्वात महत्त्वाचे म्हणजे क्रॉस-प्लॅटफॉर्मसाठी एक कोर्स सेट केला आहे. शेवटी, व्हीसीएल म्हणजे काय? व्हिज्युअल घटक लायब्ररी. व्हिज्युअल घटकांची लायब्ररी. तुम्हाला हे मान्य नसेल. उदाहरणार्थ, मी नेहमी VCL चा अविभाज्य भाग म्हणून अनेक नॉन-व्हिज्युअल घटक, आणि घटक नसून फक्त क्लासेसचा विचार केला आहे, आणि मोठ्या संख्येने तृतीय-पक्ष वर्ग आणि घटक हे VCL चा विस्तार आहे. बरं, मी VCL चा भाग म्हणून TDataset च्या वारसांचा विचार करू शकत नाही. जरी, उदाहरणार्थ, डीबीईएक्सप्रेस लायब्ररी हा शब्द सूचित करतो की हे जसे होते तसे, व्हीसीएल नाही. वरवर पाहता, एम्बारकाडेरो खरोखरच मोनोलिथिक, माझ्या दृष्टिकोनातून, व्हीसीएल, अनेक स्वतंत्र लायब्ररींमध्ये विभाजित करते. नाही, अर्थातच, पूर्णपणे वेगळे नाही, परंतु तरीही. आणि जर आपण हा दृष्टिकोन स्वीकारला तर, फायरमँकी व्हीसीएलचा दृश्य भाग तंतोतंत बदलण्याचा हेतू आहे (मी अद्याप वर्ग आणि घटकांची संपूर्ण लायब्ररी, कदाचित बोरलँड घटक लायब्ररी कशी म्हणू?).

आजूबाजूला बांधलेल्या लायब्ररीमध्ये कोणते दृश्य घटक समाविष्ट आहेत? ऑपरेटिंग सिस्टमद्वारे प्रदान केलेल्या निम्न-स्तरीय, मूलभूत घटकांच्या आसपास. विंडो हँडल, फॉन्ट, स्वतः विंडो, इनपुट घटक, संदेश, डिव्हाइस संदर्भ आणि बरेच काही - या डेल्फीसह आलेल्या लायब्ररीच्या संकल्पना नाहीत, परंतु ऑपरेटिंग सिस्टमच्या संकल्पना आहेत. होय, अगदी विंडोज. आणि जर तुम्हाला क्रॉस-प्लॅटफॉर्म लायब्ररी बनवायची असेल, तर लायब्ररीचा वापर करून लिहिलेला प्रोग्राम चालवणाऱ्या ऑपरेटिंग सिस्टमद्वारे ऑफर केलेल्या पायाभूत सुविधांचा त्याग करणे तर्कसंगत आहे.

FireMonkey नेमके हेच करण्याचा प्रयत्न करत आहे. ते विविध ऑपरेटिंग सिस्टीममध्ये समर्थित मूलभूत यंत्रणांवर आधारित पायाभूत सुविधा निर्माण करण्याचा प्रयत्न करत आहेत, जी ऑपरेटिंग सिस्टम स्वतः ऑफर करत असलेल्या सेवेची जागा घेण्यास सक्षम आहेत.

बरेच लोक प्रयत्न करत असल्याचे आठवतेक्रॉस-प्लॅटफॉर्म केवळ लायब्ररीच नाही तर डेल्फी देखील आहे. डेल्फी 6 च्या समांतर, Kylix उत्पादन आणि CLX लायब्ररी सोडण्यात आली. हे सर्व तुम्हाला लिनक्ससाठी विकसित करता यावे म्हणून केले गेले. तथापि, Windows कडे असलेल्या ग्राफिकल विंडो इंटरफेसच्या दृष्टीने लिनक्समध्ये अनेक मूलभूत संकल्पना नाहीत. Linux साठी विंडो इंटरफेस सामान्यतः मूळ घटना नाही. हा एक पर्यायी अनुप्रयोग आहे. आणि मला काही प्रकारचे सिंथेटिक लायब्ररी लिहायचे होते. त्याच्या मदतीने विंडोज आणि लिनक्स दोन्हीसाठी प्रोग्राम लिहिणे शक्य झाले. तथापि, मला अजूनही निराशा नाही, तर त्रासदायक गैरसोयीची भावना आठवते, जी मी CLX मधील ॲनालॉग व्हिज्युअल घटक वापरण्याचा प्रयत्न केला तेव्हा अनुभवली. मी खूप गोष्टी गमावू लागलो. व्हीसीएल वापरून विकसित करताना विचार न करता मला जे करण्याची सवय होती ते CLX वापरून करणे कठीण, पूर्णपणे वेगळे किंवा अशक्य होते.

BDE वरून DBExpress वर स्विच करताना मला असेच वाटले. फील्ड टेस्ट BDE पासून जुने, परिचित (बोरलँड हे आधीपासूनच Windows साठी Quattro Pro आणि Windows साठी Paradox मध्ये वापरत होते, आणि त्याला ODAPI, आणि नंतर IDAPI असे म्हणतात, आणि माझ्या मते, Microsoft ODBC वर डोके आणि खांदे होते) घोषित केले गेले. अप्रचलित तंत्रज्ञान जे नवीन प्रकल्पांमध्ये नवीन लायब्ररीला मार्ग देईल. DBExpress मध्ये मला नेहमी काहीतरी कमी होते, विशेषत: ज्ञान.

त्याच वेळी, मी कोणत्याही प्रकारे वर सूचीबद्ध केलेल्या लायब्ररींना किंवा त्यांच्या देखाव्यास कारणीभूत ठरलेल्या निर्णयांची निंदा किंवा टीका करू इच्छित नाही. आम्ही फक्त माझ्या छापांबद्दल बोलत आहोत, कधीकधी प्रथम छापे.

आता हे थोडेसे स्पष्ट झाले आहे की FireMonkey वापरून एक छोटासा कार्यरत प्रकल्प लिहिण्याच्या निर्णयाने अनेक समस्या का आणल्या. बऱ्याच वर्षांच्या कालावधीत, योजना, प्रकल्प आणि डिझाइन विकसित करताना, एक विशिष्ट स्टिरियोटाइप विकसित झाला आहे, काय आणि कसे करावे याचे एक विशिष्ट टेम्पलेट. आणि माझ्या बाबतीत मला या वस्तुस्थितीचा सामना करावा लागला की टेम्पलेट बदलणे आवश्यक आहे. कारण व्हीसीएल वापरण्याची सवय असलेल्या सर्व गोष्टी तुम्ही FireMonkey वर तयार केलेल्या प्रोजेक्टमध्ये हस्तांतरित करू शकत नाही.

प्रकल्प सुरू करताना, मला डेजा वू ची एक विशिष्ट भावना अनुभवली. बहुदा, अस्वस्थतेची भावना. उदाहरणार्थ, नेहमीच्या इनपुट घटकांमध्ये अनेक गुणधर्म नसतात. कार्यप्रणालीच्या काही वैशिष्ट्यांच्या ज्ञानाशी संबंधित युक्त्यांच्या आधारे सरावात दृढपणे स्थापित केलेली तंत्रे नवीन संदर्भात कार्य करत नाहीत. काही घटक आमूलाग्र बदलले आहेत हे सांगायला नको.

बरं, आणखी एक महत्त्वाचा मुद्दा. तुम्हाला कामावर सहसा कोणत्या प्रकारचे प्रकल्प करावे लागतात, जर ते (काम) लेखन कंपाइलर, मॉडेलिंग सिस्टम किंवा इतर कोणत्याही गोष्टीशी संबंधित नसेल तर? मला वाटते की बहुतेकांसाठी ते काहीतरी विकसित करत आहे ज्यामध्ये डेटाबेस वापरणे समाविष्ट आहे. शिवाय, DBMS द्वारे प्रदान केलेल्या सेवांचा वापर उच्च वैज्ञानिक काहीतरी देखील करू शकते.

इथे आणखी एक हल्ला माझी वाट पाहत होता. काही कारणास्तव, जेव्हा तुम्हाला हे तथ्य आढळते की FireMonkey मध्ये डेटाबेसमध्ये साठवलेल्या डेटासह कार्य करण्यावर लक्ष केंद्रित करणारे घटक नसतात, तेव्हा तुम्ही स्वतःला या गोष्टीसाठी पूर्णपणे तयार नसल्याचे समजता. जरी मी याबद्दल आधीच बर्याच वेळा वाचले आहे आणि (सैद्धांतिकदृष्ट्या) काय वापरावे हे मला माहित आहे. आम्ही लाइव्ह बाइंडिंगबद्दल बोलत आहोत.

वास्तविक कूल प्रोग्रामरने डीबी-अवेअर घटक वापरावे की नाही या वादात मला अडकायचे नाही, सराव मध्ये, नवीन प्रकल्प सुरू करताना, मला या दोन्ही गोष्टींची सवय करावी लागली नवीन व्हिज्युअल घटक आणि प्रदर्शन, संपादन आणि शेवटी जतन करण्यासाठी डेटा पुनर्प्राप्त करण्याचा एक नवीन मार्ग. जे, पुन्हा, वाईट किंवा चांगले नाही. माझ्यासाठी हे असेच घडले.

इथेच मला पहिल्या इंप्रेशनबद्दल माझी पोस्ट संपवायची आहे. प्रकल्पावर काम करताना कशावर मात केली आणि कशी झाली याबद्दलच्या कथा पुढे आहेत.

गेल्या वर्षी सप्टेंबरमध्ये रिलीज झालेल्या, डेल्फी XE2 मध्ये विक्रमी नवकल्पनांचा समावेश आहे.
डेल्फी XE2 च्या क्षमतांचे संक्षिप्त विहंगावलोकन आधीच Habré वर प्रकाशित केले गेले आहे. परंतु, स्पष्टपणे, सर्वात उल्लेखनीय नवकल्पना म्हणजे फायरमँकी प्लॅटफॉर्म आणि येथे मी त्याकडे थोडे लक्ष देऊ इच्छितो.
मी सामग्रीच्या लिंक्सची एक छोटी निवड केली आहे जी, मला आशा आहे की, तुम्हाला या प्लॅटफॉर्मची कमी-अधिक पुरेशी कल्पना मिळण्यास मदत होईल. परंतु प्रथम, ज्यांना माहित नाही त्यांच्यासाठी, मी तुम्हाला फायरमंकी म्हणजे काय ते थोडक्यात सांगेन.
Embarcadero Technologies Windows, Mac आणि iOS साठी समृद्ध व्यवसाय अनुप्रयोग तयार करण्यासाठी FireMonkey ला एक व्यासपीठ म्हणून स्थान देते. शिवाय, हे प्लॅटफॉर्म प्रत्येक OS साठी मूळ आहे, म्हणजे. FireMonkey वापरून तयार केलेला अनुप्रयोग चालवताना, कोणतेही अतिरिक्त ॲड-ऑन वापरले जात नाहीत.
FireMonkey थेट मूळ (OS दृष्टीकोनातून) ग्राफिक्स लायब्ररीशी लिंक करते जसे की OpenGL किंवा DirectX. अशा प्रकारे, GPU दृष्टिकोनातून सर्वोत्तम उपाय प्रस्तावित आहे.
फायरमँकी आर्किटेक्चरचा मुख्य भाग वर्गांची एक शक्तिशाली लायब्ररी आहे (दृश्य घटकांसह).
संकलन प्रक्रियेदरम्यान लक्ष्य व्यासपीठ निवडले जाते.
FireMonkey ची पहिली आवृत्ती फक्त Win32, Win64, MacOSX आणि iOS ला सपोर्ट करते, परंतु Embarcadero भविष्यात इतर अनेक प्लॅटफॉर्मवर पोर्ट करण्याची योजना आखत आहे.

आपण काय विचार करावा?

जरी FireMonkey प्लॅटफॉर्म 3D ऍप्लिकेशन्स विकसित करण्यासाठी विस्तृत साधने प्रदान करते, तरीही ते गेम इंजिन मानले जाऊ नये. FireMonkey विशेषतः व्यवसाय अनुप्रयोग विकसित करण्यासाठी एक व्यासपीठ म्हणून स्थित आहे.
उत्पादन सध्या त्याच्या उत्क्रांतीच्या सुरुवातीच्या टप्प्यात आहे. आणि FireMonkey च्या अनेक वैशिष्ट्यांमध्ये गुणात्मक आणि परिमाणात्मक दोन्ही बदल होत आहेत.

मला आशा आहे की खालील लिंक्स तुम्हाला नवीन प्लॅटफॉर्मची मुख्य वैशिष्ट्ये समजण्यास मदत करतील.
Embarcadero वेबसाइटवर अधिकृत उत्पादन पृष्ठ (रशियन)

इंग्रजी भाषेतील साहित्यापैकी मी मालिका हायलाइट करू इच्छितो (इंग्रजी)

काय पहावे?

डेल्फीच्या नवीनतम आवृत्तीसाठी, उत्पादनाच्या क्षमतांना समर्पित अधिक व्हिडिओ सामग्री आहे आणि पूर्वीपेक्षा त्यासह कसे कार्य करावे. दोन्ही अधिकृत, Embarcadero कडून आणि स्वतंत्र विकसकांकडून. YouTube वर FireMonkey बद्दल बरेच व्हिडिओ आहेत, आपण फक्त शोध वापरू शकता. या विपुल सामग्रीमध्ये, मी मार्को कँटू - RAD इन ॲक्शन लँडिंग पृष्ठावरील तीन व्हिडिओंची मालिका हायलाइट करेन, अशा प्रकारे माझ्या संशोधनाला उपयुक्ततेचा वेक्टर देईल.

03/06/2013 दुपारी 12:46 वा

FireMonkey मध्ये ब्राउझर घटक नसल्यामुळे मला खूप त्रास सहन करावा लागला. सुप्रसिद्ध डेल्फी क्रोमियम एम्बेडेड प्रकल्पात अद्याप नवीनतम बिल्डमध्ये FMX समर्थन समाविष्ट आहे. परंतु बराच वेळ निघून गेला असूनही, लेखकाला FMX2 साठी समर्थन जोडण्याची घाई नाही. शेवटी मला परिस्थिती स्वतःच्या हातात घ्यावी लागली.

अधिकृत असेंब्लीमधील TCChromiumFMX घटक FireMonkey (XE2 मध्ये) मध्ये चांगले काम करतो, परंतु FMX2 मध्ये संकलित देखील करत नाही. मला ते कसे कार्य करते हे थोडे शोधून काढायचे होते आणि त्याचे निराकरण करायचे होते. सुदैवाने, कोणतेही मोठे बदल आवश्यक नव्हते.

FMX2 मध्ये, घटकाला आवश्यक असलेल्या दोन गोष्टी बदलल्या आहेत.

प्रथम, TBitmap मध्ये यापुढे ScanLine आणि StartLine गुणधर्म नाहीत. TBitmap च्या सामग्रीचा थेट प्रवेश पुन्हा डिझाइन केला गेला आहे (मला आश्चर्य वाटते का?) आणि आता TBitmapData वर्गाद्वारे उपलब्ध आहे, जे TBitmap.Map पद्धत परत करते.

बरं, दुसरा, अधिक सुप्रसिद्ध - प्लॅटफॉर्म .* आता नाही, आता तुम्हाला TPlatformServices.GetPlatformService द्वारे आवश्यक इंटरफेस मिळणे आवश्यक आहे. येथे सर्व काही अगदी सरळ आहे आणि कोणतीही समस्या नाही.

मी विशेषतः सर्जनशीलतेने त्याची चाचणी केली नाही, परंतु माझ्या हेतूंसाठी घटक अगदी योग्य आहे - आपण त्याद्वारे वेबसाइट पाहू शकता. ते डाउनलोड करा. मी कदाचित माझी संपादने लेखकाला देखील पाठवीन, ज्यांना कदाचित ती अधिकृत आवृत्तीमध्ये जोडणे आवश्यक वाटेल.

07/30/2012 2:43 am

जेसन साउथवेलने नेटिव्ह विंडोज/ओएसएक्स कंट्रोल्ससाठी फायरमँकी रॅपर्सचा संच विकसित करण्याचा प्रस्ताव ठेवला आहे आणि त्यासाठी पैसे उभारत आहेत. सुरुवातीला, त्याने 20 हजार डॉलर्स उभे करण्याची योजना आखली आहे.

कल्पना स्पष्ट आहे. सध्याचे FireMonkey घटक डेल्फी वापरून अगदी सुरवातीपासून रेंडर केले जातात, जे एकीकडे, त्यांची क्रॉस-प्लॅटफॉर्म कार्यक्षमता मोठ्या प्रमाणात सुनिश्चित करतात, परंतु दुसरीकडे, परिणामी आम्हाला असे घटक मिळतात जे सध्या समर्थित दोन्ही ऑपरेटिंग सिस्टममध्ये अगदी नैसर्गिक दिसत नाहीत. . आणि ते इतके वाईट नाही - देखावा व्यतिरिक्त, आपल्याला या घटकांचे तर्कशास्त्र स्वतंत्रपणे विकसित करावे लागेल. उदाहरणार्थ, रिचएडिट हे फारच क्लिष्ट आहे, फायरमँकीमध्ये स्वतःचे तर्क पुन्हा सांगणे हे क्षुल्लक काम नाही. व्हीसीएल आणि सीएलएक्स या दोघांनी चाक पुन्हा शोधून काढले नाही, परंतु तयार चाक वापरले.

आता वाईट बातमी येते. सर्व काही रनटाइमवर कार्य करते, परंतु मला आयटम डिझाइनरमध्ये माझा नवीन टॅब प्रकार जोडण्याचा कोणताही मार्ग सापडला नाही. आणि असे दिसते की सर्व सूची नियंत्रणांमध्ये समान समस्या आहे: TListBox, TGrid इ. सुरुवातीला मला त्यांच्या अंमलबजावणीचा दृष्टिकोन आवडला, परंतु आता मला याबद्दल शंका आहे. इंटरनेट शोधात असे दिसून आले की मी या समस्येसह एकटा नाही.

मदत शांत आहे, मला कोडमध्ये काहीही सापडले नाही. खरोखर कोणताही मार्ग नाही का? हे अत्यंत अप्रिय असेल.

या ब्लॉगच्या संदर्भात, हा प्रकल्प प्रामुख्याने मनोरंजक आहे कारण तो FireMonkey वर लागू केला गेला आहे आणि या प्लॅटफॉर्मच्या क्षमतांचे एक आश्चर्यकारक प्रदर्शन आहे. आणि फक्त गेल्या आठवड्यात, उत्पादनाचा सार्वजनिक बीटा रिलीज झाला. अशाप्रकारे, ब्लॉग वाचक स्वतःसाठी खरोखरच गुंतागुंतीचे काहीतरी "जाणू" शकतात. फायरमँकीअर्ज

कार्यक्रमाबद्दल काही शब्द. सर्व प्रथम, हे लक्षात घ्यावे की स्फेअरची वर्तमान आवृत्ती थोडी वेगळी आहे. होय, कधीकधी असे होते ...

नवीन SphereLiveहा फक्त दुसरा संदेशवाहक नाही. सर्व प्रथम, हे एक साधन आहे जे आपल्याला शैक्षणिक प्रक्रिया प्रभावीपणे आयोजित करण्यास अनुमती देते. हे दूरस्थ व्याख्याने, खाजगी सल्लामसलत, वैयक्तिक धडे आणि इतर तत्सम क्रियाकलापांना अनुमती देते. त्याच वेळी, ते कामासाठी आवश्यक असलेल्या जवळजवळ प्रत्येक गोष्टीसह सुसज्ज आहे. एका अनन्य फाइल ट्रान्सफर सिस्टीमसह प्रारंभ करणे आणि सर्वात शक्तिशाली बिलिंग उपप्रणालीसह समाप्त होणे.

या टप्प्यावर, उत्पादन वापरण्यासाठी किंमती अगदी परवडणाऱ्या आहेत. मर्यादित संख्येच्या श्रोत्यांच्या अधीन आणि थोड्या प्रमाणात संसाधने, उत्पादन विनामूल्य वापरले जाऊ शकते.

स्वाभाविकच, गोलाकार त्याचा मुख्य फायदा वापरतो फायरमँकी- क्रॉस-प्लॅटफॉर्म. अनुप्रयोग सध्या Windows आणि MacOS आवृत्त्यांमध्ये उपलब्ध आहे. Android आवृत्ती आता कोणत्याही दिवशी अपेक्षित आहे.

तथापि, माझ्यासाठी, SphereLive मनोरंजक आहे, सर्व प्रथम, मूळ समाधानांच्या संपूर्ण संचासह एक नाविन्यपूर्ण उत्पादन म्हणून. कधीकधी ते फक्त "... व्वा, तुम्ही ते कसे केले?" तसे, Sphere डेव्हलपरपैकी एक FireMonkey ला समर्पित फोरमवरील चर्चेत सक्रियपणे भाग घेतो. हे स्वतःच अनुप्रयोग डाउनलोड करण्याचे आणि लेखकाशी थेट तांत्रिक समस्यांवर चर्चा करण्याचे एक कारण असू शकते. माझ्यावर विश्वास ठेवा, पाहण्यासारखे आणि शिकण्यासारखे काहीतरी आहे.

TListViewमध्ये मोबाईल ऍप्लिकेशन इंटरफेस तयार करण्यासाठी मुख्य घटकांपैकी एक आहे फायरमँकी. हा घटक वापरण्यास सर्वात सोपा नाही; यास बऱ्याचदा कोडची आवश्यकता असते, परंतु ते विकासकाला कृतीचे महत्त्वपूर्ण स्वातंत्र्य प्रदान करते. अर्थात, अनुप्रयोगांमध्ये आपण देखील वापरू शकता TListBox, जिथे सर्व काही खूप सोपे आहे. परंतु TListBoxनिश्चित संख्या रेकॉर्ड प्रदर्शित करण्यासाठी चांगले असू शकते, डेटा स्त्रोतांकडून डेटा आउटपुट करण्यासाठी, आपण निश्चितपणे वापरावे TListView.

TListView आणि TListBox मधील मुख्य फरक आहेत:

  1. TListBoxItem- नियंत्रण, TListViewItem- नाही
  2. IN TListBoxItemतुम्ही पालक वापरून कोणतीही नियंत्रणे जोडू शकता. IN TListVIewItem- नाही.
  3. TListVIewItemप्रदर्शनासाठी फक्त डेटा संग्रहित करते
  4. TListVIewItemपद्धतीद्वारे संग्रहित डेटाचे स्वतः प्रस्तुतीकरण करते प्रस्तुत करा
  5. TListVIewItem मधील वास्तविक मॅन्युअल रेखांकनामुळे, गती आणि कमी मेमरी वापरामध्ये वाढ झाली आहे (केवळ संबंधित डेटा संचयित करणे)
  6. तुमची स्वतःची आवृत्ती तयार करण्यासाठी TListViewItem, तुम्हाला तुमचा स्वतःचा आयटम क्लास तयार करणे आवश्यक आहे, त्यात आवश्यक डेटा (उदाहरणार्थ, वेळ) लागू करणे आणि वेळ संपादित करण्यासाठी इन-प्लेस एडिटर तयार करणे, त्याची नोंदणी करणे इ.

केवळ वाढलेली कार्यक्षमता आणि कमी मेमरी वापर ही वस्तुस्थिती वापरण्याच्या बाजूने एक आकर्षक युक्तिवाद आहे TListView. पण अजून काहीतरी आहे.

अनेकांमध्ये अँड्रॉइडअनुप्रयोगांसाठी मला सूचीच्या खालील अंमलबजावणीचे निरीक्षण करावे लागले. तुम्ही सूची घटकावर क्लिक करता तेव्हा (आयटम, तुम्ही निवडलेल्या शब्दावलीला चिकटून राहिल्यास), एक विशिष्ट क्रिया केली जाते. सामान्यत: डेटा संपादित करण्यासाठी नवीन फॉर्म कॉल केला जातो. परंतु जेव्हा तुम्ही दाबून धरता (लाँग टॅप), तेव्हा पूर्णपणे वेगळी क्रिया केली जाते. आणि या घटना एकमेकांना छेदत नाहीत. दुसऱ्या शब्दांत, Android अनुप्रयोग स्पष्टपणे "लाँग प्रेस" आणि "सामान्य" मध्ये फरक करू शकतात. शिवाय, यादी स्क्रोल करताना यापैकी कोणतीही घटना सक्रिय होत नाही. यांडेक्स मेलमधील अक्षरांची यादी हे एक चांगले उदाहरण आहे.

सर्व प्रथम, मी सर्व ब्लॉग वाचकांचे मागील सुट्टीच्या दिवशी अभिनंदन करू इच्छितो आणि येत्या वर्षासाठी त्यांना शुभेच्छा देऊ इच्छितो.

स्पष्ट परिस्थितीमुळे, मी पारंपारिक नवीन वर्षाचा अहवाल बनवला नाही किंवा मी वर्षासाठी कोणतेही नियोजन केले नाही. तथापि, जीवन स्थिर होत नाही, काम चालू आहे आणि डेल्फीच्या जगात काही घटना घडत आहेत. मी नजीकच्या भविष्यात ख्रिसमसच्या सुट्ट्यांमध्ये "डेल्फीच्या जगाच्या बातम्यांमधून" गमावलेल्या बातम्या प्रकाशित करण्याचे वचन देतो. यादरम्यान, मी खरेदी केलेल्या नवीन डिव्हाइसबद्दल मी तुम्हाला सांगेन.

आपण अधिकृत वेबसाइटवर वैशिष्ट्ये शोधू शकता. आणि व्यक्तिनिष्ठ छाप खूप आनंददायी आहे. लक्षात घेण्याजोगे हे तथ्य आहे की डिव्हाइस अक्षरशः निर्मात्याच्या मालकीच्या सॉफ्टवेअरने भरलेले आहे. आणि विक्रेत्यांना भेट म्हणून सॉफ्टवेअरचा एक प्रभावी संच देखील मिळाला. स्मार्टफोन अतिशय वेगवान आहे आणि त्याची किंमत (सुमारे $200) पूर्णपणे न्याय्य आहे. तसे, मी माझा मागील फोन GSmart 1362 2 वर्षांपूर्वी त्याच पैशात विकत घेतला होता. परंतु, जसे तुम्ही अंदाज लावला असेल, माझ्यासाठी मुख्य स्वारस्य म्हणजे ते कसे कार्य करतील फायरमँकीअनुप्रयोग

टाइमरबद्दलची कथा पुढे चालू ठेवण्यापूर्वी, दोन बातम्या आहेत.

प्रथम, पहिले XE7 अद्यतन जारी केले गेले. परंपरेनुसार, ते नोंदणीकृत वापरकर्त्यांसाठी उपलब्ध आहे. आपण निश्चित बग्सची सूची शोधू शकता. अपडेट केलेल्या वातावरणात ऍप्लिकेशन कसे वागेल हे मला पहायचे होते. प्रत्यक्षात, प्रयोगासाठी अद्याप जागा असतानाही, कोणतीही दुरुस्ती करावी लागली नाही.

दुसरी बातमी. Embarcadero विशेष ऑफर वर्षाच्या शेवटपर्यंत वाढवण्यात आल्या आहेत:

बरं, आता थेट पोस्टच्या विषयावर. मूलभूतपणे, आमच्यासाठी फक्त Android साठी आधीच तयार केलेला अनुप्रयोग लॉन्च करण्याचा प्रयत्न करणे बाकी आहे. हे करण्यासाठी, मी मागील पोस्टमध्ये जे लिहिले आहे ते आम्ही वापरतो. बहुदा नवीन. मी हा अनुप्रयोग डीबग केला आहे Nexus 7, त्यानुसार Android 7″ टॅब्लेटचे प्रतिनिधित्व जोडले. डिझाईनमध्ये थोडासा बदल करावा लागला.

कदाचित फक्त आळशी लोकांनी स्वतःचा टाइमर लिहिला नाही. आणि मोबाइल प्लॅटफॉर्मच्या विकासास समर्थन देण्याच्या संदर्भात, डेल्फीमध्ये टाइमर लिहिण्याचे कार्य सामान्यतः एक पंथ कार्य मानले जाऊ शकते. तेव्हा मला वाटले, विकासाचे उदाहरण म्हणून का नाही फायरमँकीअनुप्रयोग टाइमरचे विश्लेषण करू शकत नाही. Android साठी, अर्थातच. अर्थात, हेच माझ्या कार्याबद्दलचे दृश्य असेल, जे विशेषतः कठीण नसले तरी, त्याच्या स्वतःच्या बारकावे आहेत. कदाचित आपल्याकडे काही टिप्पण्या किंवा सूचना असतील, टिप्पण्यांमध्ये त्यांची चर्चा करणे चांगले होईल. मी मोबाईल ऍप्लिकेशन्स लिहिण्याच्या क्षेत्रातील तज्ञ नाही, त्यामुळे तुमच्या कोणत्याही टिप्पण्या माझ्यासाठी मौल्यवान असतील.

या संज्ञेच्या इंग्रजी समजानुसार आम्ही टाइमर विकसित करणार आहोत. म्हणजेच, स्क्रीन एक डायल आणि चार बटणे प्रदर्शित करेल - “प्रारंभ”, “विराम द्या”, “थांबा” आणि “रद्द करा”. काउंटडाउन पुढे दिशेने असेल (म्हणजे, वेळ वाढेल). ज्या पर्यायामध्ये वेळ सेट केली आहे आणि काउंटडाउन इंग्रजी परिभाषेत आहे त्याला स्टॉप वॉच म्हणतात, कदाचित मी नंतर ते लागू करण्याचा प्रयत्न करेन. आम्ही ज्या ऍप्लिकेशनवर काम करणार आहोत ते स्टॉपवॉचच्या कार्यक्षमतेच्या जवळ आहे.

डेल्फी XE7 आम्हाला विकास प्रक्रिया लक्षणीयरीत्या सुलभ करण्यास अनुमती देते, कारण आम्ही आता Win32 साठी एक वास्तविक अनुप्रयोग तयार आणि डीबग करू शकतो आणि नंतर आवश्यक मोबाइल डिव्हाइससाठी फॉर्म सबमिशन जोडू शकतो आणि थोड्या समायोजनासह, एक कार्यरत मोबाइल मिळवू शकतो. अर्ज खरे असल्याचे खूप चांगले वाटते? कदाचित. परंतु मला कार्य अंमलात आणून या विधानाची चाचणी घ्यायची आहे.

मोबाईल ऍप्लिकेशन्स विकसित करणे शक्य आहे का हे खाजगी संभाषणांमध्ये मला माझ्या सहकाऱ्यांना वारंवार विचारले जाते. फायरमँकीकिंवा हे उत्पादन सोल्यूशनऐवजी प्रोटोटाइप आहे?

मला वाटतं, आता मी बाहेरच्या आणि बाहेरच्या संशयितांनाही खात्री देऊ शकतो.

माझा मित्र आणि सहकारी तगीर युमागुझिन यांनी मला खूप पूर्वी भाग घेतलेल्या प्रकल्पाबद्दल सांगितले. आता, हा प्रकल्प प्री-रिलीझ स्थितीत असताना, आम्ही ठरवले की हे वर्णन डेल्फी समुदायासाठी मनोरंजक असेल. थोडक्यात, एफएममध्ये राबविण्यात आलेला हा खरोखर मोठा प्रकल्प आहे. आम्ही Sphere Live प्रकल्पाबद्दल बोलत आहोत. त्या प्रकल्पाला वाहिलेला एक छोटासा लेख नुकताच Habrahabr.ru मध्ये प्रकाशित झाला आहे, विकास विभागाचे प्रमुख Alexey Glyzin यांनी माझ्या ब्लॉगच्या प्रेक्षकांना विचारात घेऊन प्रकल्पाबद्दल अधिक सांगण्यास सहमती दर्शवली.

ए.बी.- ॲलेक्सी, सर्वसाधारणपणे, तुमचा प्रकल्प काय आहे?

ए.जी.:- कल्पना एकाच वेळी आणि त्वरित प्रकट झाली नाही. 'Sphere' प्रोजेक्टच्या आधी आमची टीम प्रोजेक्टवर काम करत होती जिथे स्ट्रीम ऑडिओ/व्हिडिओ तंत्रज्ञान लागू केले होते. नंतर आम्ही आमचे स्वतःचे सॉफ्टवेअर तयार केले जे फीडबॅकसह अमर्यादित वापरकर्त्यांना मल्टीमीडिया प्रवाह वितरित करण्यास सक्षम होते. परंतु आम्हाला बिलिंग वैशिष्ट्य समाविष्ट करणे आवश्यक आहे.
अर्जाला अनेक आवश्यकतांचे पालन करावे लागले. प्रथम, कॉन्फरन्सची जास्तीत जास्त सरलीकृत संस्था किंवा सहभागींना प्रसारित करणे ज्या रकमेचा आम्ही अंदाज लावू शकत नाही. दुसरे, सर्वात महत्त्वाचे म्हणजे, आमच्या क्लायंटला आमच्या अर्जाद्वारे कमाई करण्याची संधी देणे आणि प्रणालीची जटिलता कमी करणे, ध्येय गाठण्यासाठी आवश्यक साधनांची मात्रा कमी करणे. अभ्यासक्रम, वेबिनार किंवा फक्त सल्लामसलत आयोजित करणे सोपे आहे.

स्मृतीसाठी एक छोटी टीप फायरडॅकवर्तमान आवृत्तीमध्ये डेल्फी XE6. परंतु प्रथम, संबंधित प्रश्नांची उत्तरे कोठे शोधायची याबद्दल काही शब्द फायरमँकी. रशियन भाषिक वापरकर्ते येथे विशेषाधिकार प्राप्त स्थितीत आहेत.

RAD स्टुडिओ XE5 वर्ल्ड टूरचा भाग म्हणून खारकोव्ह कार्यक्रमाची तयारी करत असताना, मला काम करताना एक छोटीशी समस्या आली. SQLiteवापरून फायरडॅक. जर विंडोज ऍप्लिकेशनमध्ये भरलेला डेटाबेस ऍप्लिकेशनसह हस्तांतरित केला असेल अँड्रॉइड, डेटाबेसमधील सिरिलिक स्ट्रिंग्स यापुढे वाचनीय नाहीत (अक्षरांऐवजी प्रश्नचिन्ह प्रदर्शित केले जातात). तथापि, आपण थेट मोबाइल डिव्हाइसवर डेटाबेस भरल्यास, रशियन वर्ण अगदी योग्यरित्या वाचले जातात. तृतीय-पक्ष अनुप्रयोगात भरलेल्या डेटाबेसमधील डेटा, किंवा मध्ये डेल्फीइतर डेटा ऍक्सेस घटक वापरणारे अनुप्रयोग देखील सामान्यपणे प्रदर्शित केले गेले. मीटिंगमध्ये तोडगा काढण्यात अयशस्वी झाला आणि मला एका प्रसिद्ध युक्रेनियन फुटबॉल तज्ञाचा हवाला द्यावा लागला: "आम्ही ते शोधून काढू!"

शेवटच्या विपरीत, मी वर्णन केलेल्या समस्येला सामोरे जाण्यास व्यवस्थापित केले. कनेक्ट करताना डीफॉल्टनुसार SQLiteव्ही फायरडॅक ANSI स्ट्रिंग फॉरमॅट वापरला जातो.

जर तुम्ही युनिकोड ला सक्तीने इन्स्टॉल केले तर सर्वकाही जसे पाहिजे तसे चालेल. पण एक अप्रिय क्षण देखील आहे. स्ट्रिंग फॉरमॅट बदलून, तुम्हाला सर्व डेटा सेटमधील फील्डची सूची पुन्हा तयार करावी लागेल, तसेच डेटा प्रदर्शित करण्यासाठी आणि प्रविष्ट करण्यासाठी जबाबदार घटक पुन्हा कनेक्ट करावे लागतील. म्हणून, एन्कोडिंगची त्वरित काळजी घेणे चांगले आहे.

या मिनी-सिरीजच्या मागील भागांमध्ये, आम्ही डेटाबेस तयार करणे, त्याची रचना करणे आणि डेल्फी वरून त्यास जोडणे यावर काम केले. या भागात, मी सर्वात सोप्या केसपासून सुरू होणाऱ्या सारण्यांवरील डेटाचे प्रदर्शन समजून घेण्याचा प्रस्ताव देतो.

एक साधा सारणी डेटा संपादक, सामान्यतः जटिल अनुप्रयोगाचा भाग. टेबल्स संपादित करण्यासाठी मी सहसा वेगळा फॉर्म वापरतो. चला किराणा मालाच्या यादीपासून सुरुवात करूया. सर्व प्रथम, आम्हाला टेबल डेटा ऍक्सेस करण्यासाठी डेटासेट तयार करणे आवश्यक आहे. आमच्या बाबतीत, घटक वापरणे अगदी शक्य आहे TADTable. ते DataModule मध्ये ठेवू आणि गुणधर्म मूल्य निर्दिष्ट करू जोडणी. मालमत्ता संपादक मध्ये टेबलचे नावटेबल्सची एक सूची दिसेल ज्यामधून आपण टेबल निवडतो उत्पादने. आपण सर्वकाही योग्यरित्या केले असल्यास, आपण मालमत्ता नियुक्त करू शकता सक्रियमूल्य खरे. घटकाचे नाव त्वरित बदलणे चांगले आहे (उदाहरणार्थ, ADTProduct). यानंतर, मी सहसा डेटासेटसाठी फील्डचा संच तयार करतो. फील्ड एडिटरला कॉल करा (घटकावर डबल-क्लिक करा) आणि संदर्भ मेनूमधून सर्व फील्ड जोडा निवडा.

ज्यांना माहिती नाही त्यांच्यासाठी मी या ऑपरेशनचे सार स्पष्ट करेन. येथे आपण DataSet फील्डचा पूर्वनिर्धारित संच तयार करतो. जर आपण हे डिझाइन मोडमध्ये व्यक्तिचलितपणे केले नाही तर, तत्त्वतः, काहीही वाईट होणार नाही. रनटाइममध्ये हा संच आपोआप तयार होईल. पण तरीही मी ते स्वहस्ते तयार करण्यास प्राधान्य देतो. याची अनेक कारणे आहेत. प्रथम, फील्डचा संच व्यवस्थापित करणे अधिक सोयीचे आहे, कारण आम्ही स्वतः डिझाइन मोडमध्ये अतिरिक्त (गणना केलेले किंवा लुकअप) फील्ड तयार करू शकतो. आपण स्वतः फील्डचे गुणधर्म देखील बदलू शकतो. आणि याव्यतिरिक्त, आम्हाला TField घटकाच्या नावाने कोडमधील फील्डमध्ये प्रवेश करण्याची संधी मिळते, जे माझ्या मते, कोड लिहिणे मोठ्या प्रमाणात सुलभ करते.

व्हीसीएल ऍप्लिकेशनच्या बाबतीत, आम्ही घटक डेटा सेटशी कनेक्ट करू TDataSource. हा घटक डेटा सेट आणि व्हिज्युअल नियंत्रणे यांच्यातील कनेक्शन प्रदान करेल. घटकाच्या डेटासेट गुणधर्माने आमच्या डेटा सेटचा (ADTPproduct) संदर्भ घेणे आवश्यक आहे. खाली मी DFM फाईलचा एक भाग देतो

ऑब्जेक्ट ADTProduct: TADTable IndexFieldNames = "ID" कनेक्शन = ADConnection UpdateOptions. UpdateTableName = "Product" TableName = "Product" Left = 64 Top = 192 ऑब्जेक्ट ADTProductID: TADAutoIncField FieldName = "ID" Origin = "ID" ProviderFlags = [ pfInWhere, pfInKey] ReadOnly = ट्रूडक्टल टीटी = ट्रूडक्ट एण्ड ऑब्जेक्ट "फिल्ड टाईट" मूळ = "शीर्षक" आकार = 50 अंतिम ऑब्जेक्ट dsउत्पादन: TDataSource DataSet = ADTProduct डावीकडे = 120 शीर्ष = 192 समाप्त

कृपया एक मनोरंजक वैशिष्ट्य लक्षात घ्या: DataModule फॉर्म फाइल FMX फॉरमॅटमध्ये सेव्ह केली जात नाही, नियमित FireMonkey फॉर्मप्रमाणे, परंतु VCL प्रमाणे DFM फॉरमॅटमध्ये.

पुढील पायरी म्हणजे डेटा सेट उघडण्यासाठी एक प्रक्रिया तयार करणे, ज्याला प्रोग्राम सुरू झाल्यावर आम्हाला रनटाइममध्ये कॉल करणे आवश्यक आहे. त्याच DataModule मध्ये तयार करू. प्रक्रिया कोड अत्यंत सोपा आहे:

प्रक्रिया TDM. ConnectToDB; प्रारंभ एड कनेक्शन. उघडा(); एडीटी उत्पादन. उघडा(); शेवट;

आम्ही DataModule साठी OnCreate इव्हेंट हँडलरमध्ये प्रक्रिया कॉल करू.



आम्ही वाचण्याची शिफारस करतो

वर