ഡെൽഫിയിൽ ഉപയോക്തൃ ഇന്റർഫേസുകൾ സൃഷ്ടിക്കുന്നതിനുള്ള ശുപാർശകൾ. ഡെൽഫി ഡെൽഫി ഇന്റർഫേസ് വിവരണത്തിലെ ഇന്റർഫേസുകളുമായി പ്രവർത്തിക്കുന്നതിന്റെ സവിശേഷതകൾ

Viber ഡൗൺലോഡ് ചെയ്യുക 23.01.2022
Viber ഡൗൺലോഡ് ചെയ്യുക

ഡെൽഫി പ്രോഗ്രാമിംഗ് പരിതസ്ഥിതിയുടെ ഏറ്റവും വലിയ ശക്തികളിലൊന്ന് അതിന്റെ ഓപ്പൺ ആർക്കിടെക്ചറാണ്, ഇത് ഒരുതരം മെറ്റാപ്രോഗ്രാമിംഗ് അനുവദിക്കാൻ ഡെൽഫിയെ അനുവദിക്കുന്നു, ഇത് നിങ്ങളെ "പ്രോഗ്രാമിംഗ് എൻവയോൺമെന്റ് പ്രോഗ്രാം ചെയ്യാൻ" അനുവദിക്കുന്നു. ഈ സമീപനം ഡെൽഫിയെ ഗുണപരമായി ഒരു പുതിയ തലത്തിലുള്ള ആപ്ലിക്കേഷൻ ഡെവലപ്‌മെന്റ് സിസ്റ്റത്തിലേക്ക് കൊണ്ടുവരുന്നു, കൂടാതെ ആപ്ലിക്കേഷൻ സിസ്റ്റങ്ങൾ സൃഷ്ടിക്കുന്നതിന്റെ മിക്കവാറും എല്ലാ ഘട്ടങ്ങളെയും പിന്തുണയ്ക്കുന്ന അധിക ടൂളുകൾ ഈ ഉൽപ്പന്നത്തിൽ ഉൾപ്പെടുത്താൻ നിങ്ങളെ അനുവദിക്കുന്നു. ഐഡിഇയും (ഇന്റഗ്രേറ്റഡ് ഡെവലപ്‌മെന്റ് എൻവയോൺമെന്റ്) ബാഹ്യ ഉപകരണങ്ങളും തമ്മിലുള്ള ലിങ്കായ ഡെൽഫിയിൽ നടപ്പിലാക്കിയ ഓപ്പൺ ഇന്റർഫേസുകൾ എന്ന് വിളിക്കപ്പെടുന്ന ആശയത്തിന് നന്ദി, അത്തരം വിശാലമായ സാധ്യതകൾ തുറക്കുന്നു.

ഈ ലേഖനം ഡെൽഫിയുടെ ഓപ്പൺ ഇന്റർഫേസുകളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുകയും അവ നൽകുന്ന ഫീച്ചറുകളുടെ ഒരു അവലോകനം നൽകുകയും ചെയ്യുന്നു. ഡെൽഫി ആറ് പൊതു ഇന്റർഫേസുകളെ നിർവചിക്കുന്നു: ടൂൾ ഇന്റർഫേസ്, ഡിസൈൻ ഇന്റർഫേസ്, വിദഗ്ദ്ധ ഇന്റർഫേസ്, ഫയൽ ഇന്റർഫേസ്, എഡിറ്റ് ഇന്റർഫേസ്, പതിപ്പ് കൺട്രോൾ ഇന്റർഫേസ്. ഈ ലേഖനത്തിന്റെ ചട്ടക്കൂടിനുള്ളിൽ അവയിൽ ഓരോന്നിന്റെയും സാധ്യതകൾ വിശദമായി വിവരിക്കാനും ചിത്രീകരിക്കാനും ഞങ്ങൾക്ക് കഴിയുമെന്ന് തോന്നുന്നില്ല. ഡെവലപ്പർമാർ അവർക്ക് വിശദമായ അഭിപ്രായങ്ങൾ നൽകിയതിനാൽ, പരിഗണനയിലുള്ള പ്രശ്നങ്ങൾ കൂടുതൽ വിശദമായി മനസ്സിലാക്കാൻ ഡെൽഫിയുടെ ഉറവിട ഗ്രന്ഥങ്ങൾ നിങ്ങളെ സഹായിക്കും. പൊതു ഇന്റർഫേസുകളെ പ്രതിനിധീകരിക്കുന്ന ക്ലാസ് ഡിക്ലറേഷനുകൾ ...\Delphi\Source\ToolsAPI ഡയറക്ടറിയിലെ അനുബന്ധ മൊഡ്യൂളുകളിൽ അടങ്ങിയിരിക്കുന്നു. ഡിസൈൻ ഇന്റർഫേസ് (മൊഡ്യൂൾ DsgnIntf.pas) പ്രോപ്പർട്ടി എഡിറ്റർമാരും ഘടക എഡിറ്റർമാരും സൃഷ്ടിക്കുന്നതിനുള്ള മാർഗങ്ങൾ നൽകുന്നു.

പ്രോപ്പർട്ടിയും ഘടക എഡിറ്ററുകളും ഒരു പ്രത്യേക ചർച്ചയ്ക്ക് യോഗ്യമായ വിഷയമാണ്, അതിനാൽ നിങ്ങൾ അനുബന്ധ പ്രോപ്പർട്ടിയുടെ മൂല്യം മാറ്റാൻ ശ്രമിക്കുമ്പോൾ ഒബ്‌ജക്റ്റ് ഇൻസ്പെക്ടറുടെ പെരുമാറ്റം പ്രോപ്പർട്ടി എഡിറ്റർ നിയന്ത്രിക്കുന്നുവെന്നും നിങ്ങൾ ഇരട്ടിപ്പിക്കുമ്പോൾ ഘടക എഡിറ്റർ സജീവമാകുമെന്നും ഞങ്ങൾ ഓർക്കുന്നു. ഫോമിൽ സ്ഥാപിച്ചിരിക്കുന്ന ഘടകത്തിന്റെ ചിത്രത്തിലെ ഇടത് മൌസ് ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക. പതിപ്പ് നിയന്ത്രണ സംവിധാനങ്ങൾ സൃഷ്ടിക്കുന്നതിനാണ് പതിപ്പ് കൺട്രോൾ ഇന്റർഫേസ് (VCSIntf.pas മൊഡ്യൂൾ) രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. പതിപ്പ് 2.0 മുതൽ, ഡെൽഫി ഇന്റർസോൾവ് പിവിസിഎസ് സംയോജിത പതിപ്പ് നിയന്ത്രണ സംവിധാനത്തെ പിന്തുണയ്ക്കുന്നു, അതിനാൽ മിക്ക കേസുകളിലും നിങ്ങളുടെ സ്വന്തം സിസ്റ്റം വികസിപ്പിക്കേണ്ട ആവശ്യമില്ല. ഇക്കാരണത്താൽ, പതിപ്പ് നിയന്ത്രണ ഇന്റർഫേസിന്റെ പരിഗണനയും ഞങ്ങൾ ഒഴിവാക്കും. ഫയൽ ഇന്റർഫേസ് (FileIntf.pas മൊഡ്യൂൾ) IDE-യുടെ പ്രവർത്തിക്കുന്ന ഫയൽ സിസ്റ്റം പുനർനിർവചിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു, ഇത് ഫയലുകൾ സൂക്ഷിക്കുന്നതിനുള്ള നിങ്ങളുടെ സ്വന്തം വഴി തിരഞ്ഞെടുക്കുന്നത് സാധ്യമാക്കുന്നു (ഉദാഹരണത്തിന് ഡാറ്റാബേസ് സെർവറിലെ മെമ്മോ ഫീൽഡുകളിൽ). എഡിറ്റ് ഇന്റർഫേസ് (മൊഡ്യൂൾ EditIntf.pas) സോഴ്സ് ടെക്സ്റ്റ് ബഫറിലേക്ക് ആക്സസ് നൽകുന്നു, ഇത് കോഡ് വിശകലനം ചെയ്യാനും സൃഷ്ടിക്കാനും കോഡ് എഡിറ്റർ വിൻഡോയിലെ കഴ്സർ സ്ഥാനം നിർണ്ണയിക്കാനും മാറ്റാനും സോഴ്സ് ടെക്സ്റ്റ് സിന്റാക്സ് ഹൈലൈറ്റിംഗ് നിയന്ത്രിക്കാനും നിങ്ങളെ അനുവദിക്കുന്നു.

പ്രത്യേക ക്ലാസുകൾ ഫോമിൽ സ്ഥാപിച്ചിരിക്കുന്ന ഘടകങ്ങൾക്ക് ഇന്റർഫേസുകൾ നൽകുന്നു (ഘടകത്തിന്റെ തരം നിർവചിക്കുക, മാതാപിതാക്കളുടെയും കുട്ടികളുടെയും ഘടകങ്ങളിലേക്കുള്ള റഫറൻസുകൾ നേടുക, പ്രോപ്പർട്ടികൾ ആക്സസ് ചെയ്യുക, ഫോക്കസ് കൈമാറുക, ഇല്ലാതാക്കുക മുതലായവ), ഫോമിലേക്കും പ്രോജക്റ്റിന്റെ ഉറവിട ഫയലിലേക്കും. മൊഡ്യൂളിന്റെ സോഴ്‌സ് കോഡ് മാറ്റുക, ഫോം പരിഷ്‌ക്കരിക്കുക, ഘടകത്തിന്റെ പേരുമാറ്റുക, മൊഡ്യൂളിന്റെ പേരുമാറ്റുക, പേരുമാറ്റുക അല്ലെങ്കിൽ ഇല്ലാതാക്കുക, പ്രോജക്റ്റ് റിസോഴ്‌സ് മാറ്റുക തുടങ്ങിയ ഇവന്റുകളോടുള്ള പ്രതികരണം നിർണ്ണയിക്കുന്ന മൊഡ്യൂൾ നോട്ടിഫയറുകൾ എന്ന് വിളിക്കപ്പെടുന്നവ തിരിച്ചറിയാനും എഡിറ്റ് ഇന്റർഫേസ് നിങ്ങളെ അനുവദിക്കുന്നു. ഫയൽ മുതലായവ. ടൂൾ ഇന്റർഫേസ് (മൊഡ്യൂൾ ToolIntf. pas) ഡെവലപ്പർമാർക്ക് IDE-യുടെ അവസ്ഥയെക്കുറിച്ചുള്ള പൊതുവായ വിവരങ്ങൾ നേടുന്നതിനും പ്രോജക്റ്റുകളും വ്യക്തിഗത ഫയലുകളും തുറക്കൽ, സംരക്ഷിക്കൽ, അടയ്‌ക്കൽ, ഒരു മൊഡ്യൂൾ സൃഷ്‌ടിക്കുക, ഇവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ നേടൽ തുടങ്ങിയ പ്രവർത്തനങ്ങൾ നടത്തുന്നതിനുള്ള മാർഗം നൽകുന്നു. നിലവിലെ പ്രോജക്റ്റ് (മൊഡ്യൂളുകളുടെയും ഫോമുകളുടെയും എണ്ണം, അവയുടെ പേരുകൾ മുതലായവ) , ഫയൽ സിസ്റ്റം രജിസ്റ്റർ ചെയ്യുക, വ്യക്തിഗത മൊഡ്യൂളുകളിലേക്ക് ഇന്റർഫേസുകൾ സംഘടിപ്പിക്കുക തുടങ്ങിയവ. മൊഡ്യൂൾ നോട്ടിഫയറുകൾക്ക് പുറമേ, ടൂൾ ഇന്റർഫേസ് ആഡ്-ഇൻ നോട്ടിഫയറുകൾ നിർവചിക്കുന്നു, ഫയലുകളും പ്രോജക്റ്റുകളും തുറക്കുക/അടയ്ക്കുക, ഒരു പ്രോജക്റ്റ് ഡെസ്ക്ടോപ്പ് ഫയൽ ലോഡ് ചെയ്യുക, സംരക്ഷിക്കുക, പ്രോജക്റ്റ് മൊഡ്യൂളുകൾ ചേർക്കുക/ഒഴിവാക്കുക, പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക/അൺഇൻസ്റ്റാൾ ചെയ്യുക, ഒരു പ്രോജക്റ്റ് കംപൈൽ ചെയ്യുക, കൂടാതെ മോഡുലാർ നോട്ടിഫയറുകളിൽ നിന്ന് വ്യത്യസ്തമായി, ചില ഇവന്റുകളുടെ നിർവ്വഹണം റദ്ദാക്കാൻ ആഡ്-ഇൻ നോട്ടിഫയറുകൾ നിങ്ങളെ അനുവദിക്കുന്നു.

കൂടാതെ, ടൂൾ ഇന്റർഫേസ് ഡെൽഫി ഐഡിഇയുടെ പ്രധാന മെനുവിൽ പ്രവേശിക്കുന്നതിനുള്ള ഒരു മാർഗം നൽകുന്നു, അതിൽ കൂടുതൽ ഇനങ്ങൾ ഉൾച്ചേർക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു. വിദഗ്ദ്ധ ഇന്റർഫേസ് (മൊഡ്യൂൾ ExptIntf.pas) ആണ് വിദഗ്ധരെ സൃഷ്ടിക്കുന്നതിനുള്ള അടിസ്ഥാനം - സോഫ്റ്റ്‌വെയർ മൊഡ്യൂളുകൾ IDE-ൽ അതിന്റെ പ്രവർത്തനക്ഷമത വിപുലീകരിക്കുന്നതിനായി നിർമ്മിച്ചിരിക്കുന്നു. ഒരു വിദഗ്ദ്ധന്റെ ഉദാഹരണമാണ് ഡെൽഫി ഡാറ്റാബേസ് ഫോം വിസാർഡ്, ഇത് ഒരു ഡാറ്റാബേസ് ടേബിളിലെ ഉള്ളടക്കങ്ങൾ കാണുന്നതിനും പരിഷ്കരിക്കുന്നതിനുമായി ഒരു ഫോം സൃഷ്ടിക്കുന്നു. വിദഗ്ദ്ധ ക്ലാസ് നിർവചിച്ച ശേഷം, ഡെൽഫി ഞങ്ങളുടെ വിദഗ്ദ്ധനെക്കുറിച്ച് "പഠിക്കുന്നു" എന്ന് ഉറപ്പാക്കേണ്ടതുണ്ട്. ഇത് ചെയ്യുന്നതിന്, RegisterLibraryExpert നടപടിക്രമം വിളിച്ചുകൊണ്ട് അത് രജിസ്റ്റർ ചെയ്യണം, ഒരു പാരാമീറ്ററായി വിദഗ്ദ്ധ ക്ലാസ്സിന്റെ ഒരു ഉദാഹരണം പാസ്സാക്കുക. ഒരു ചിത്രീകരണമെന്ന നിലയിൽ, നമുക്ക് esStandard ശൈലിയിൽ ഒരു ലളിതമായ വിദഗ്ദ്ധനെ സൃഷ്ടിക്കാം, അത് അനുബന്ധ ഡെൽഫി മെനു ഇനം തിരഞ്ഞെടുക്കുമ്പോൾ, അത് പ്രവർത്തിക്കുന്നു എന്ന സന്ദേശം പ്രദർശിപ്പിക്കുന്നു. മുകളിലുള്ള പട്ടികയിൽ നിന്ന് നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, esStandard ശൈലിക്ക് ആറ് രീതികൾ അസാധുവാക്കേണ്ടതുണ്ട്:

വിദഗ്ദ്ധനെ "സജീവമാക്കാൻ", നിങ്ങൾ മെനു ഇനം തിരഞ്ഞെടുക്കണം ഘടകം/ഘടകം ഇൻസ്റ്റാൾ ചെയ്യുക ... , ബ്രൗസ് ഡയലോഗിൽ വിദഗ്ധൻ (ഞങ്ങളുടെ കാര്യത്തിൽ exmpl_01.pas) അടങ്ങിയിരിക്കുന്ന മൊഡ്യൂൾ തിരഞ്ഞെടുക്കുക, ശരി ക്ലിക്കുചെയ്യുക, കംപൈൽ ചെയ്തതിന് ശേഷം സഹായ വിഭാഗത്തിലെ ഡെൽഫി മെയിൻ മെനുവിലെ dclusr30.dpk പാക്കേജ്, സിമ്പിൾ എക്‌സ്‌പെർട്ട് 1 ഇനം ദൃശ്യമാകും, തിരഞ്ഞെടുക്കുമ്പോൾ, “സ്റ്റാൻഡേർഡ് എക്‌സ്‌പെർട്ട് ആരംഭിച്ചു!” എന്ന വിവര സന്ദേശം ദൃശ്യമാകും. എന്തുകൊണ്ടാണ് ഡെൽഫി വിദഗ്‌ധ മെനു ഇനം സഹായ വിഭാഗത്തിൽ ഉൾപ്പെടുത്തുന്നത് എന്നത് ഒരു നിഗൂഢതയായി തുടരുന്നു. മെനു ഇനം ഡെൽഫിയിൽ എവിടെയും ദൃശ്യമാകുന്നത് നിങ്ങൾക്ക് ഇഷ്ടപ്പെട്ടില്ലെങ്കിൽ, നിങ്ങൾക്ക് ആവശ്യമുള്ളിടത്ത് അല്ല, ഇനിപ്പറയുന്ന ഓപ്ഷൻ സാധ്യമാണ്: മെനു ഇനത്തിന്റെ സ്വയമേവ സൃഷ്ടിക്കുന്നത് ഒഴിവാക്കുന്ന ആഡ്-ഇൻ ശൈലിയിൽ ഒരു വിദഗ്ദ്ധനെ സൃഷ്ടിക്കുക, കൂടാതെ ടൂൾ ഇന്റർഫേസ് ഉപയോഗിച്ച് മെനു ഇനം "മാനുവലായി" ചേർക്കുക. പ്രധാന മെനുവിലെ പുതിയ ഇനത്തിന്റെ സ്ഥാനം ഏകപക്ഷീയമായ രീതിയിൽ സജ്ജീകരിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കും.

ഒരു മെനു ഇനം ചേർക്കുന്നതിന്, ടൂൾ ഇന്റർഫേസിന്റെ അടിസ്ഥാനമായ TIToolServices ക്ലാസും IDE പ്രധാന മെനുവിലേക്കും അതിന്റെ ഇനങ്ങളിലേക്കും ഇന്റർഫേസുകൾ നടപ്പിലാക്കുന്ന TIMainMenuIntf, TImenuItemIntf ക്ലാസുകളും ഉപയോഗിക്കുന്നു. TIToolServices ക്ലാസ്സിന്റെ ToolServices ഇൻസ്റ്റൻസ്, അത് ആരംഭിക്കുമ്പോൾ IDE തന്നെ സൃഷ്ടിക്കുന്നു. ഡെൽഫി മെയിൻ മെനുവിലേക്കും അതിന്റെ ഇനങ്ങളിലേക്കും ഇന്റർഫേസുകൾ റിലീസ് ചെയ്യേണ്ടത് ഡവലപ്പറുടെ ഉത്തരവാദിത്തമാണെന്ന കാര്യം ശ്രദ്ധിക്കുക. വഴിയിൽ, വിദഗ്ദ്ധ ഉപദേഷ്ടാവിന്റെ പ്രവർത്തന ലോഡ് നമുക്ക് ചെറുതായി സങ്കീർണ്ണമാക്കാം: അതിന്റെ മെനു ഇനം സജീവമാകുമ്പോൾ, പരിസ്ഥിതിയിൽ നിലവിൽ തുറന്നിരിക്കുന്ന പ്രോജക്റ്റിന്റെ പേരിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ അത് നൽകും: പാരാമീറ്ററുകൾ എന്ന നിലയിൽ, ഇത് പുതിയ മെനു ഇനത്തിന്റെ വാചകം, അതിന്റെ ഐഡന്റിഫയർ, പുതിയ ഇനം ചേർത്ത ഇനത്തിന്റെ ഐഡന്റിഫയർ, കീയുടെ പ്രതീകാത്മക പ്രാതിനിധ്യം എന്നിവ കൈമാറുന്നു, ഇത് Ctrl കീയ്‌ക്കൊപ്പം വേഗത്തിൽ ആക്‌സസ് ചെയ്യാൻ ഉപയോഗിക്കാം. പുതിയ ഇനം, പുതിയ ഇനത്തിന്റെ തിരഞ്ഞെടുപ്പുമായി ബന്ധപ്പെട്ട ഇവന്റ് ഹാൻഡ്‌ലർ. വാച്ചുകൾ ഇനത്തിന് മുമ്പുള്ള കാഴ്‌ച വിഭാഗത്തിലേക്ക് ഞങ്ങൾ ഒരു പുതിയ മെനു ഇനം ചേർത്തു.

ഇനി നമുക്ക് നോട്ടിഫയർമാരെ പരിചയപ്പെടാം. പ്രോജക്‌റ്റുകൾ അടയ്‌ക്കുമ്പോൾ/തുറക്കുമ്പോൾ ട്രാക്ക് ചെയ്യുന്ന ഒരു ആഡ്-ഇൻ നോട്ടിഫയർ നമുക്ക് നിർവചിക്കാം, അതിനനുസരിച്ച് സജീവ പ്രോജക്‌റ്റിന്റെ പേര് സംഭരിക്കുന്ന ഫീൽഡ് ക്രമീകരിക്കുന്നു (സംക്ഷിപ്തതയ്‌ക്കായി മുമ്പത്തെ ഉദാഹരണവുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ മാറ്റമില്ലാത്ത രീതികൾ നടപ്പിലാക്കുന്നത് ഞങ്ങൾ ഒഴിവാക്കുന്നു): നടപ്പിലാക്കാൻ നോട്ടിഫയർ, ഞങ്ങൾ TAddInNotifier ക്ലാസ് നിർവചിച്ചു, അത് TIAddInNotifier-ന്റെ പിൻഗാമിയും ഫയൽ നോട്ടിഫിക്കേഷനെ അസാധുവാക്കുന്നതുമാണ്. ആഡ്-ഇൻ നോട്ടിഫയറിന് പ്രതികരിക്കാൻ കഴിയുന്ന ഒരു ഇവന്റ് സംഭവിക്കുമ്പോഴെല്ലാം IDE ഈ രീതിയെ വിളിക്കും (അത്തരത്തിലുള്ള ഓരോ ഇവന്റിനെയും ബന്ധപ്പെട്ട TFileNotification തരം സ്ഥിരാങ്കം സൂചിപ്പിക്കുന്നു). TAddInNotifier ക്ലാസിലെ വിദഗ്ദ്ധ ഫീൽഡ് ഒരു വിദഗ്‌ദ്ധന്റെ (TAddInNotifier.FileNotification രീതി) ഫീഡ്‌ബാക്കിനായി പ്രവർത്തിക്കുന്നു. വിദഗ്‌ധന്റെ ഡിസ്ട്രക്‌റ്ററിൽ, നോട്ടിഫയറിന്റെ രജിസ്‌ട്രേഷൻ രജിസ്റ്റർ ചെയ്യാത്തതും അറിയിപ്പ് നശിപ്പിക്കുന്നതുമാണ്. ഇനി നമുക്ക് മോഡുലാർ നോട്ടിഫയറുകളുടെ ഉപയോഗം ചിത്രീകരിക്കാം. ഒരു പ്രോജക്റ്റ് ഫയൽ സേവ് ചെയ്യുന്നതിന്റെ ഓരോ പ്രവർത്തനത്തെക്കുറിച്ചും സന്ദേശങ്ങൾ നൽകുന്ന ഒരു ആഡ്-ഇൻ വിദഗ്‌ദ്ധനെ നമുക്ക് സൃഷ്‌ടിക്കാം (സംക്ഷിപ്തതയ്‌ക്കായി, ഞങ്ങൾക്ക് ഇതിനകം അറിയാവുന്ന രീതികൾ നടപ്പിലാക്കുന്നത് നൽകിയിട്ടില്ല): ഈ ഉദാഹരണത്തിൽ, ആഡ്-ഇൻ വിദഗ്ധൻ ഓപ്പണിംഗുമായി ബന്ധപ്പെട്ട ഇവന്റുകൾ നിരീക്ഷിക്കുന്നു. / പ്രോജക്ടുകളുടെ ക്ലോസിംഗ്.

ഓരോ തവണയും ഒരു പ്രോജക്റ്റ് തുറക്കുമ്പോൾ, പ്രോജക്റ്റ് ഫയലുമായി ബന്ധപ്പെട്ട ഒരു മൊഡ്യൂൾ നോട്ടിഫയർ രജിസ്റ്റർ ചെയ്യപ്പെടുന്നു. നടപ്പാക്കലിന്റെ കാര്യത്തിൽ, മോഡുലാർ നോട്ടിഫയറുകൾ ആഡ്-ഇൻ നോട്ടിഫയറുകൾക്ക് സമാനമാണ്: TIModuleNotifier-ന്റെ പിൻഗാമിയായ ഒരു TModuleNotifier ക്ലാസ് ഞങ്ങൾ നിർവ്വചിക്കുകയും അതിന്റെ Notify, ComponentRenamed രീതികൾ അസാധുവാക്കുകയും ചെയ്യുന്നു. ഈ മൊഡ്യൂളുമായി ബന്ധപ്പെട്ട ചില ഇവന്റുകൾ സംഭവിക്കുമ്പോൾ IDE അറിയിപ്പ് രീതിയെ വിളിക്കുന്നു; ഈ രീതിക്കുള്ളിൽ, ഒരു പ്രത്യേക സംഭവത്തോടുള്ള പ്രതികരണം നിർണ്ണയിക്കപ്പെടുന്നു. മൊഡ്യൂൾ ഫോമിലുള്ള ഘടകത്തിന്റെ പേര് മാറുമ്പോൾ ComponentRenamed രീതിയെ വിളിക്കുന്നു. ഞങ്ങൾ ഈ രീതി ഉപയോഗിക്കുന്നില്ല എന്നത് ശ്രദ്ധിക്കുക, പക്ഷേ ഞങ്ങൾ അത് അസാധുവാക്കണം, അല്ലാത്തപക്ഷം, ഘടകത്തിന്റെ പേര് മാറുമ്പോൾ, അടിസ്ഥാന ക്ലാസിന്റെ അമൂർത്ത രീതി വിളിക്കപ്പെടും, ഇത് പ്രവചനാതീതമായ പ്രത്യാഘാതങ്ങളിലേക്ക് നയിക്കുന്നു.

ഒരു മൊഡ്യൂൾ നോട്ടിഫയർ രജിസ്റ്റർ ചെയ്യുന്നത് ഒരു നോട്ടിഫയർ ആഡ്-ഇൻ രജിസ്റ്റർ ചെയ്യുന്നതിനേക്കാൾ കുറച്ച് സങ്കീർണ്ണമാണ്: ആദ്യം നമുക്ക് മൊഡ്യൂൾ ഇന്റർഫേസ് (TIModuleInterface) ലഭിക്കും, തുടർന്ന് മൊഡ്യൂൾ ഇന്റർഫേസ് ഉപയോഗിച്ച് നോട്ടിഫയർ രജിസ്റ്റർ ചെയ്യുക. പ്രോജക്റ്റ് അടച്ചുകഴിഞ്ഞാൽ, മൊഡ്യൂൾ നോട്ടിഫയർ രജിസ്റ്റർ ചെയ്യപ്പെടാത്തതാണ് (വീണ്ടും TIModuleInterface ഉപയോഗിച്ച്) നോട്ടിഫയർ നശിപ്പിക്കപ്പെടും. ഉപസംഹാരമായി, കോഡ് എഡിറ്റർ വിൻഡോയിലെ കഴ്സറിന്റെ സ്ഥാനം നിങ്ങൾക്ക് എങ്ങനെ നിർണ്ണയിക്കാമെന്ന് ഞങ്ങൾ കാണിക്കും. ഉചിതമായ മെനു ഇനം തിരഞ്ഞെടുക്കുമ്പോൾ, സജീവമായ ഫയലിന്റെ പേരും അതിൽ കഴ്‌സറിന്റെ സ്ഥാനവും അടങ്ങുന്ന ഒരു സന്ദേശം പ്രദർശിപ്പിക്കുന്ന ഒരു വിദഗ്ദ്ധ ഉപദേഷ്ടാവിനെ നമുക്ക് സൃഷ്ടിക്കാം (ഈ ഉദാഹരണത്തിന് ആവശ്യമായ രീതികൾ മാത്രം നടപ്പിലാക്കുന്നത് നൽകിയിരിക്കുന്നു): കഴ്‌സർ സ്ഥാനം നിർണ്ണയിക്കാൻ, നമുക്ക് ഇനിപ്പറയുന്ന ഇന്റർഫേസുകളുടെ ക്രമം ലഭിക്കണം: മൊഡ്യൂൾ ഇന്റർഫേസ് (TIModuleInterface); കോഡ് എഡിറ്റർ ഇന്റർഫേസ് (TIEditorInterface); എഡിറ്റർ വിൻഡോയിലെ മൊഡ്യൂൾ വ്യൂ ഇന്റർഫേസ് (TIEditView).

വിദഗ്‌ധ മെനു ഇനം തിരഞ്ഞെടുക്കുമ്പോൾ സോഴ്‌സ് ടെക്‌സ്‌റ്റുള്ള (*.പാസ്) സജീവമായ ഫയൽ സജീവമാണെങ്കിൽ, സജീവമായ ഫയലിന്റെ പേരും അതിൽ കഴ്‌സറിന്റെ നിലവിലെ സ്ഥാനവും അടങ്ങുന്ന ഒരു സന്ദേശം പ്രദർശിപ്പിക്കും. സജീവമായ ഫയൽ ഒരു പാസ് ഫയലല്ലെങ്കിൽ, സന്ദേശമൊന്നും നൽകില്ല. സജീവ ഫയലിന്റെ പേര് ലഭിക്കാൻ TIToolServices ക്ലാസിന്റെ GetCurrentFile രീതി ഉപയോഗിക്കുന്നു. പൊതു ഇന്റർഫേസുകൾ ഉപയോഗിക്കുന്നതിനുള്ള വഴികളെക്കുറിച്ചുള്ള ഞങ്ങളുടെ ചർച്ച ഇത് അവസാനിപ്പിക്കുന്നു. നൽകിയിരിക്കുന്ന എല്ലാ ഉദാഹരണങ്ങളുടെയും സോഴ്സ് കോഡ് CD-ROM-ൽ അടങ്ങിയിരിക്കുന്നു. ഡെൽഫി മൊഡ്യൂളുകളുടെ സോഴ്‌സ് കോഡ് ബുക്ക്‌മാർക്ക് ചെയ്യാൻ ഉപയോക്താവിനെ അനുവദിക്കുന്ന ഒരു ആഡ്-ഇൻ വിദഗ്ദ്ധനെ ഉൾക്കൊള്ളുന്ന കൂടുതൽ സങ്കീർണ്ണവും വിപുലീകൃതവുമായ ഉദാഹരണവും CD-ROM-ൽ അടങ്ങിയിരിക്കുന്നു. ബുക്ക്‌മാർക്ക് വിദഗ്ദ്ധനെ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനും ഉപയോഗിക്കുന്നതിനുമുള്ള ഒരു ദ്രുത ഗൈഡ് bkmrks97.htm ഫയലിൽ അടങ്ങിയിരിക്കുന്നു. അതിനാൽ, ഈ ലേഖനത്തിൽ, പൊതു ഇന്റർഫേസുകൾ പൊതുവായി ചർച്ച ചെയ്യുകയും അവയുടെ ഉപയോഗത്തിന്റെ ഉദാഹരണങ്ങൾ നൽകുകയും ചെയ്യുന്നു. ഒരിക്കൽ കൂടി, ഓപ്പൺ ഇന്റർഫേസുകളുടെ സോഴ്സ് കോഡുകളുടെ ലഭ്യതയ്ക്ക് നന്ദി, നിങ്ങൾക്ക് താൽപ്പര്യമുള്ള വിശദാംശങ്ങൾ എളുപ്പത്തിൽ മനസ്സിലാക്കാൻ കഴിയും. ഓപ്പൺ ഇന്റർഫേസുകൾ നൽകുന്ന വൈവിധ്യമാർന്ന സാധ്യതകൾ നിങ്ങൾക്ക് ഒന്നിലധികം ധീരവും ഉപയോഗപ്രദവുമായ ആശയങ്ങൾ നൽകുമെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു.

ഫലങ്ങൾക്കായി മാത്രം

സമയപരിധികൾ കർശനമായി പാലിക്കൽ

സുതാര്യത

പദ്ധതി നടപ്പാക്കൽ

ഒരു സമ്മാനമായി സാങ്കേതിക പിന്തുണ

പ്രോഗ്രാമിംഗ്, മെച്ചപ്പെടുത്തലുകൾ, 1C-യിൽ കൂടിയാലോചനകൾ

ഞങ്ങൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു

1. ഞങ്ങൾ ഫോണിലൂടെ പ്രശ്നം ചർച്ച ചെയ്യുന്നു. നിങ്ങൾക്ക് വിദൂര ആക്സസ് ഉണ്ടെങ്കിൽ - നിങ്ങളുടെ കമ്പ്യൂട്ടർ സ്ക്രീനിൽ കാണിക്കുക.

2. പ്രോജക്റ്റ് വലുതാണെങ്കിൽ ഞങ്ങൾ റൂബിളിൽ ജോലി വിലയിരുത്തുന്നു, ഇല്ലെങ്കിൽ - മണിക്കൂറുകളുടെ ഏകദേശ എണ്ണം.

3. ഞങ്ങൾ ജോലി പൂർത്തിയാക്കുന്നു.

4. നിങ്ങളുടെ പ്രോഗ്രാമിലെ ജോലി നിങ്ങൾ അംഗീകരിക്കുന്നു, പോരായ്മകൾ ഉണ്ടെങ്കിൽ, ഞങ്ങൾ അവ ശരിയാക്കും.

5. ഞങ്ങൾ ഒരു ഇൻവോയ്സ് ഇഷ്യൂ ചെയ്യുന്നു, നിങ്ങൾ പണമടയ്ക്കുക.

ജോലിയുടെ ചിലവ്

1. എല്ലാ പ്രവൃത്തികളും 3 വിഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നു: കൺസൾട്ടേഷൻ, ഒരു സാധാരണ കോൺഫിഗറേഷൻ അപ്ഡേറ്റ് ചെയ്യുക, ഒരു പുതിയ റിപ്പോർട്ട് വികസിപ്പിക്കുകയോ പ്രോഗ്രാമിംഗ് ചെയ്യുകയോ ചെയ്യുക, പ്രോസസ്സിംഗ്, ബട്ടണുകൾ മുതലായവ.

3. 10 മണിക്കൂറിലധികം ജോലിക്കായി, ജോലിയുടെ വിവരണവും ചെലവും ഉപയോഗിച്ച് ഒരു സാങ്കേതിക ചുമതല മുൻകൂട്ടി തയ്യാറാക്കിയിട്ടുണ്ട്. നിങ്ങളുമായുള്ള TOR അംഗീകാരത്തിന് ശേഷം ജോലി ആരംഭിക്കുന്നു.

സാങ്കേതിക സഹായം

1. മുമ്പ് അംഗീകരിച്ച പ്രവൃത്തികളിൽ എന്തെങ്കിലും പിശകുകൾ കണ്ടെത്തിയാൽ, 3 മാസത്തിനുള്ളിൽ, ഞങ്ങൾ അവ സൗജന്യമായി തിരുത്തും.

2. സാധാരണ ഉപഭോക്താക്കൾക്ക്, ഞങ്ങളുടെ ജോലിയിൽ എന്തെങ്കിലും പോരായ്മകൾ ഉണ്ടെങ്കിൽ ഞങ്ങൾ ഒരു വർഷത്തിനുള്ളിൽ സൗജന്യമായി പരിഹരിക്കും.

നിങ്ങളുടെ ബിസിനസ്സ് നിയന്ത്രിക്കുന്നതിനുള്ള പ്രോഗ്രാമുകൾ.

1C: എന്റർപ്രൈസ് വാങ്ങുക

ഞങ്ങൾ 1C യുടെ ഔദ്യോഗിക ഡീലർ ആണ്, നിങ്ങൾക്ക് ഞങ്ങളിൽ നിന്ന് വിവിധ സോഫ്റ്റ്‌വെയർ ഉൽപ്പന്നങ്ങളും ലൈസൻസുകളും വാങ്ങാം. ഒരു "ബോക്സ്" വാങ്ങുന്നതിനു പുറമേ, പ്രോഗ്രാം സജ്ജീകരിക്കാനും കൂടിയാലോചിക്കാനും അടിസ്ഥാന ക്രമീകരണങ്ങൾ ഉണ്ടാക്കാനും ഞങ്ങൾ നിങ്ങളെ സഹായിക്കും.

  • അക്കൌണ്ടിംഗ്
  • സ്റ്റോർ ഓട്ടോമേഷൻ
  • മൊത്തവ്യാപാരം
  • ഇൻസ്റ്റലേഷനും പ്രാരംഭ സജ്ജീകരണത്തിനുമുള്ള സഹായം പാക്കേജിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്!
  • ഉപഭോക്താവിന്റെ ആവശ്യങ്ങൾക്ക് അനുയോജ്യമായ കോൺഫിഗറേഷനുകൾ, സ്റ്റാൻഡേർഡ് കോൺഫിഗറേഷനിൽ ആവശ്യമായ പ്രവർത്തനങ്ങളുടെ അഭാവത്തിൽ പുതിയ മൊഡ്യൂളുകളുടെ വികസനം.
1c അക്കൗണ്ടിംഗ് 1C: ട്രേഡ് മാനേജ്മെന്റ് 1C: റീട്ടെയിൽ 1C: പേറോളും ഹ്യൂമൻ റിസോഴ്‌സ് മാനേജ്‌മെന്റും
3300 റബ്ബിൽ നിന്ന്. 6700 റബ്ബിൽ നിന്ന്. 3300 റബ്ബിൽ നിന്ന്. 7400 റബ്ബിൽ നിന്ന്.

ഒരു സെർവർ നൽകുന്നു.

തൽക്ഷണ സജ്ജീകരണ സെർവർ + 1C.

സെർവർ ഇല്ലേ? ഇത് പ്രശ്നമല്ല, ഞങ്ങൾ "ക്ലൗഡിൽ" ഒരു സെർവർ തിരഞ്ഞെടുത്ത് വേഗത്തിൽ സജ്ജീകരിക്കും. ഒരു ചെറിയ തുകയ്ക്ക്, നിങ്ങൾക്ക് വളരെ വിശ്വസനീയമായ പരിഹാരം ലഭിക്കും.

  • ലഭ്യത 24\7
  • നിങ്ങളുടെ സ്വന്തം സിസ്റ്റം അഡ്‌മിനിസ്‌ട്രേറ്ററെ സൂക്ഷിക്കേണ്ട ആവശ്യമില്ല (സമ്പാദ്യം നിങ്ങളുടെ സെർവറിന്റെ ചെലവ് വഹിക്കും).
  • സെർവറിൽ 1C യുടെ ദ്രുത സജ്ജീകരണവും ഇൻസ്റ്റാളേഷനും, 3 ദിവസത്തിനുള്ളിൽ നിങ്ങൾക്ക് ഇതിനകം പൂർണ്ണമായി പ്രവർത്തിക്കുന്ന ഒരു സിസ്റ്റം ഉണ്ടായിരിക്കും.
  • ഏത് സമയത്തും, പരിഹാരം നിങ്ങൾക്ക് അനുയോജ്യമല്ലെങ്കിൽ നിങ്ങൾക്ക് ഒരു പ്രാദേശിക സെർവറിലേക്ക് നീങ്ങാം.

നിങ്ങളുടെ 1C-യിൽ നിന്ന് SMS ചെയ്യുക

പ്രമോഷനുകളെയും കിഴിവുകളെയും കുറിച്ച് ഉപഭോക്താക്കൾ യഥാസമയം അറിയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ? ഉപഭോക്താക്കൾ മടങ്ങിവരുന്നില്ലേ? 1C-യിൽ നിന്ന് നേരിട്ട് SMS അയയ്ക്കൽ സജ്ജീകരിക്കുക!

1C-യിൽ നിന്ന് നേരിട്ട് നിങ്ങളുടെ ഉപഭോക്താക്കൾക്ക് SMS അയയ്‌ക്കുന്നത് ഞങ്ങളുടെ കമ്പനിക്ക് വേഗത്തിൽ സജ്ജീകരിക്കാൻ കഴിയും. ഓട്ടോമേറ്റ് ചെയ്യാൻ കഴിയുന്ന ഇവന്റുകളുടെ ഉദാഹരണങ്ങൾ:

  • അടുത്ത വാങ്ങലിന് തൊട്ടുപിന്നാലെ ബോണസുകൾ വാങ്ങുന്നതിനും ശേഖരിക്കുന്നതിനുമുള്ള നന്ദി.
  • ഒരു ജന്മദിനം/മറ്റൊരു പ്രധാനപ്പെട്ട അല്ലെങ്കിൽ അവധി ദിവസത്തിനുള്ള സമ്മാനമായി കാർഡിലേക്കുള്ള ബോണസുകളുടെ ശേഖരണം.
  • വെയർഹൗസ് അറിയിപ്പ്.
  • സമ്മാന വൗച്ചർ കാലഹരണപ്പെടുന്നു.
  • സാധനങ്ങളുടെ മുൻകൂർ പണമടയ്ക്കലും റിസർവേഷനും സ്വീകരിച്ചതിന്റെ അറിയിപ്പ്.
  • സ്റ്റോർ/ഓഫീസ്, ഫോൺ നമ്പറുകൾ എന്നിവയിലേക്കുള്ള വഴികളുള്ള വിലാസം.
  • തുടങ്ങിയവ.

1C-യിൽ സജ്ജീകരിക്കുന്നത് ഞങ്ങളുടെ സ്പെഷ്യലിസ്റ്റുകൾക്കോ ​​ഞങ്ങളുടെ ജീവനക്കാർക്കോ ചെയ്യാം. SMS-താരിഫ് പേജിൽ നിങ്ങൾക്ക് താരിഫുകൾ പരിചയപ്പെടാം.

  • എസ്എംഎസ് ഡെലിവറി ഗ്യാരന്റി, ഡെലിവർ ചെയ്ത എസ്എംഎസിനു മാത്രമേ പണം പിൻവലിക്കൂ.
  • ഓരോ SMS-നും പ്രത്യേക ബില്ലിംഗ്.
  • വിവിധ രീതികളിൽ ബാലൻസ് നികത്തൽ.
  • എപ്പോൾ വേണമെങ്കിലും അയച്ച എല്ലാ എസ്എംഎസുകളുടെയും ചരിത്രം കാണുക.
  • സ്വീകർത്താവിന്റെ ഫോണിലെ സംഖ്യാ നമ്പറിന് പകരം അയച്ചയാളുടെ പേര്.

C++ കോഡിൽ നിന്നുള്ള ഡെൽഫി ക്ലാസ് ഉപയോഗിക്കുന്നതിൽ എനിക്ക് ഒരു പ്രശ്നമുണ്ട്. ഒരു ഒബ്‌ജക്‌റ്റ് തിരികെ നൽകുന്ന ഒരു ഫംഗ്‌ഷൻ എക്‌സ്‌പോർട്ട് ചെയ്യുന്ന delphi dll ഡെമോ.
എന്റെ Delphi Dll കോഡ് ഇതുപോലെ കാണപ്പെടുന്നു:

ലൈബ്രറി ഡെൽഫി ടെസ്റ്റ്; // ഭാഗം ഉപയോഗിക്കുന്നു.... ടൈപ്പ് IMyObject = ഇന്റർഫേസ് നടപടിക്രമം DoThis(n: Integer); ഫംഗ്ഷൻ DoThat: PWideChar; അവസാനിക്കുന്നു; TMyObject = ക്ലാസ്(TIinterfacedObject,IMyObject) നടപടിക്രമം DoThis(n: Integer); ഫംഗ്ഷൻ DoThat: PChar; അവസാനിക്കുന്നു; // TMyObject നടപ്പിലാക്കൽ ഇവിടെ പോകൂ ... നടപടിക്രമം TMyObject.DoThis(n: Integer); ഷോമെസേജ് ആരംഭിക്കുക ("നിങ്ങൾ "+intToStr(n) +"പാരാമീറ്റർ" ഉപയോഗിച്ച് DoThis രീതിയെ വിളിക്കുന്നു); അവസാനിക്കുന്നു; ഫംഗ്ഷൻ TMyObject.DoThat: PChar; പ്രദർശന സന്ദേശം ആരംഭിക്കുക ("നിങ്ങൾ DoThat ഫംഗ്‌ഷനെ വിളിക്കുന്നു"); ഫലം:= Pchar("Hello im Dothat"); അവസാനിക്കുന്നു;

// എക്സ്പോർട്ട് DLL ഫംഗ്ഷൻ:

ഫംഗ്ഷൻ CreateMyObject: IMyObject; stdcall;കയറ്റുമതി; var txt: TextFile; AssignFile (txt,"C:\log.log") ആരംഭിക്കുക; റീസെറ്റ് (txt); Writeln(txt,"ഹലോ"); ഫലം:= TMyObject.Create; അവസാനിക്കുന്നു; CreateMyObject കയറ്റുമതി ചെയ്യുന്നു;

എന്റെ C++ പ്രൊജക്‌റ്റിൽ ഞാൻ ImyObject ഇന്റർഫേസ് ഇതുപോലെ പ്രഖ്യാപിച്ചു:

ക്ലാസ് IMyObject (പൊതുവായത്: IMyObject(); വെർച്വൽ ~IMyObject(); വെർച്വൽ ശൂന്യമായ DoThis(int n) = 0; വെർച്വൽ ചാർ* DoThat() = 0; );

എന്റെ പ്രധാന പ്രവർത്തനം ഇനിപ്പറയുന്നതാണ്:

ടൈപ്പ്ഡെഫ് IMyObject* (__stdcall *CreateFn)(); int main() (HMODULE hLib; hLib = LoadLibrary(L"DelphiTest.dll"); ഉറപ്പിക്കുക(hLib != NULL); // പാസ് !! CreateFn pfnCreate; pfnCreate = (സൃഷ്ടിക്കുക "); എങ്കിൽ (pfnCreate == NULL) ( DWORD errc = GetLastError(); printf("%u\n", errc); // ഇതിന് പിശക് ലഭിക്കുന്നു 127 ) else( printf("സക്‌സസ് ലോഡ്\n"); ) IMyObject* objptr = pfnCreate(); objptr->DoThis(5); FreeLibrary(hLib); int in; scanf_s("%i", &in); തിരികെ 0; )

ഈ ഉദാഹരണത്തിൽ ഞാൻ എക്‌സ്‌പോർട്ടുചെയ്‌ത ഫംഗ്‌ഷൻ ആക്‌സസ് ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ എനിക്ക് ഒരു റൺടൈം പിശക് ലഭിച്ചു. ലൈൻ പിശകുകൾ:
IMyObject* objptr = pfnCreate();

എന്റെ ഉദാഹരണത്തിൽ എന്താണ് തെറ്റ് എന്ന് പറയാമോ.
സാധ്യമെങ്കിൽ, C++ കോഡിൽ നിന്ന് ഒരു ഡെൽഫി ക്ലാസ് (DLL-ൽ) ആക്‌സസ് ചെയ്യുന്നതിനുള്ള ഏതെങ്കിലും പ്രവർത്തന ഉദാഹരണം.

പരിഹാരം

രീതി കൺവെൻഷൻ വിളിക്കുന്നതാണ് ആദ്യത്തെ പ്രശ്നം. ഡെൽഫി ഇന്റർഫേസ് ഒരു ഡെൽഫി പ്രത്യേക കോളിംഗ് കൺവെൻഷൻ ആയ രജിസ്റ്റർ ഉപയോഗിക്കുന്നു. stdcall ഉപയോഗിക്കുന്നു ഉദാഹരണത്തിന്, ഇന്റർഫേസ് രീതികൾക്കായി.

അടുത്ത പ്രശ്നം C++ ലാണ്. നിങ്ങളുടെ C++ ഇന്റർഫേസ് IUnknown എന്നതിൽ നിന്ന് ഉരുത്തിരിഞ്ഞതായിരിക്കണം.കൂടാതെ, ഇത് ഒരു കൺസ്ട്രക്റ്ററോ ഡിസ്ട്രക്റ്ററോ പ്രഖ്യാപിക്കാൻ പാടില്ല.

അതുകൂടാതെ, നിങ്ങളുടെ ഡെൽഫി കോഡ് PWideChar കയറ്റുമതി ചെയ്യുന്നു, അത് char*-ലേക്ക് മാപ്പ് ചെയ്യില്ല, ഇത് wchar_t*-ലേക്ക് മാപ്പ് ചെയ്യുന്നു.

കൂടുതൽ നോക്കുമ്പോൾ, ഒരു PChar തിരികെ നൽകുന്നത് ഇവിടെ മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു, കാരണം നിങ്ങളുടെ നടപ്പാക്കൽ അക്ഷരാർത്ഥത്തിൽ നൽകുന്നു. എന്നാൽ കൂടുതൽ ഗുരുതരമായ കോഡ് ഒരുപക്ഷേ ചലനാത്മകമായി അനുവദിച്ച സ്ട്രിംഗ് ഉപയോഗിക്കാൻ ആഗ്രഹിച്ചേക്കാം, ആ ഘട്ടത്തിൽ നിങ്ങളുടെ ഡിസൈൻ പിഴവുള്ളതാണ്.

സിസ്റ്റം ഡ്രൈവിന്റെ റൂട്ടിൽ ഒരു ഫയൽ സൃഷ്ടിക്കാൻ നിങ്ങൾ ഒരു എലവേറ്റഡ് അഡ്മിനിസ്ട്രേറ്റർ ആയിരിക്കണം എന്നത് ശ്രദ്ധിക്കുക. അതിനാൽ ഇത് പരാജയത്തിന്റെ മറ്റൊരു സാധ്യതയുള്ള പോയിന്റാണ്.

മറ്റ് ബഗുകൾ ഉണ്ടെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു, പക്ഷേ ഇതുവരെ ഞാൻ കണ്ടെത്തിയത് അത്രമാത്രം.

ഈ ലേഖനം ഫോറങ്ങളിലെ ചോദ്യങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്: "ഒരു DLL-ൽ നിന്ന് ഒരു സ്ട്രിംഗ് ഞാൻ എങ്ങനെ തിരികെ നൽകും?", "എങ്ങനെയാണ് ഞാൻ ഒരു റെക്കോഡുകൾ പാസാക്കുകയും തിരികെ നൽകുകയും ചെയ്യുന്നത്?", "ഞാൻ എങ്ങനെയാണ് ഒരു DLL-ലേക്ക് ഒരു ഫോം കൈമാറുക?".

അതിനാൽ നിങ്ങളുടെ ജീവിതത്തിന്റെ പകുതിയും അത് മനസിലാക്കാൻ ചെലവഴിക്കരുത് - ഈ ലേഖനത്തിൽ ഞാൻ എല്ലാം ഒരു വെള്ളി താലത്തിൽ കൊണ്ടുവരും.

ഈ ലേഖനത്തിന്റെ വിഷയങ്ങൾ, വ്യത്യസ്ത തലങ്ങളിൽ, ഇതിനകം ഒന്നിലധികം തവണ ഈ ബ്ലോഗിൽ സ്പർശിച്ചിട്ടുണ്ട്, എന്നാൽ ഈ ലേഖനത്തിൽ അവ ഒരു കൂമ്പാരമായി ശേഖരിക്കപ്പെടുന്നു, ന്യായീകരണങ്ങൾ നൽകിയിരിക്കുന്നു. ചുരുക്കത്തിൽ, ഈ ലേഖനത്തിലേക്കുള്ള ഒരു ലിങ്ക് DLL വികസിപ്പിക്കുന്നവർക്ക് എറിയാവുന്നതാണ്.

പ്രധാനപ്പെട്ട കുറിപ്പ്: ലേഖനം വായിക്കണം തുടർച്ചയായി. കോഡ് ഉദാഹരണങ്ങൾ ഇപ്രകാരം മാത്രം നൽകിയിരിക്കുന്നു ഉദാഹരണങ്ങൾ, ലേഖനത്തിന്റെ ഓരോ ഘട്ടത്തിലും (പോയിന്റ്) പുതിയ വിശദാംശങ്ങളോടൊപ്പം ഉദാഹരണങ്ങളുടെ കോഡ് ചേർക്കുന്നു. ഉദാഹരണത്തിന്, ലേഖനത്തിന്റെ തുടക്കത്തിൽ തന്നെ പിശക് കൈകാര്യം ചെയ്യുന്നില്ല, "ക്ലാസിക്" രീതികൾ സൂചിപ്പിച്ചിരിക്കുന്നു (GetLastError , sdtcall കൺവെൻഷനുകൾ മുതലായവ ഉപയോഗിക്കുന്നത് പോലുള്ളവ), അവ ലേഖനത്തിന്റെ ഗതിയിൽ കൂടുതൽ മതിയായവ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു. "പുതിയ" ("അസാധാരണ") ഡിസൈനുകൾ ചോദ്യങ്ങൾ ഉന്നയിക്കുന്നില്ല എന്ന കാരണത്താലാണ് ഇത് ചെയ്യുന്നത്. അല്ലെങ്കിൽ, ഓരോ ഉദാഹരണത്തിലും, ഒരാൾ ഫോമിന്റെ ഒരു കുറിപ്പ് ചേർക്കേണ്ടതുണ്ട്: "ഇത് ചുവടെയുള്ള ആ ഖണ്ഡികയിൽ ചർച്ചചെയ്യുന്നു, പക്ഷേ അത് - ഇവിടെ ഇവിടെ." എന്തായാലും, ലേഖനത്തിന്റെ അവസാനം ലേഖനത്തിൽ പറഞ്ഞിരിക്കുന്നതെല്ലാം കണക്കിലെടുത്ത് എഴുതിയ ഒരു റെഡിമെയ്ഡ് കോഡിലേക്കുള്ള ഒരു ലിങ്ക് ഉണ്ട്. നിങ്ങൾക്ക് അത് എടുത്ത് ഉപയോഗിക്കാം. എന്തുകൊണ്ട്, എന്തുകൊണ്ടെന്ന് ലേഖനം വിശദീകരിക്കുന്നു. "എന്തുകൊണ്ട്, എന്തുകൊണ്ട്" എന്നതിൽ നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ - ഉപസംഹാരത്തിലേക്ക് അവസാനം വരെ സ്ക്രോൾ ചെയ്യുക, ഉദാഹരണം ഡൗൺലോഡ് ചെയ്യുന്നതിനുള്ള ഒരു ലിങ്ക്.



വായിക്കാൻ ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു

മുകളിൽ