اینترنت پنجره ها اندروید

با استفاده از XML در محیط دلفی. با استفاده از مدل XML سند سند ایجاد XML در دلفی XE فلپ

خوش آمدی! این وبلاگ به اینترنت و رایانه اختصاص داده شده است، و دقیق تر، آنها به آنها اختصاص داده شده است.

احتمالا بلافاصله دیده می شود که سالها سالها در این سایت به نظر نمی رسد. بله، این سرنوشت اکثر وبلاگ ها است. هنگامی که این پروژه یک تعهد بلندپروازانه بود، و نویسنده، همانطور که در بسیاری دیگر که در آن زمان نوشت، طرح های گسترده ای برای تبدیل شدن به یکی از بهترین وبلاگ نویسان روسی بود. خوب، اگر شما در حال حاضر نگاه کنید، پس از آن وبلاگ هایی که به طور همزمان با من ساخته شده اند، اکثر آنها در ابدیت حل شده اند. و من به تازگی از دست رفته وبلاگ زمان شد. بنابراین بله، دیگر به روز نمی شود. اگر چه من یک بار در این سایت در رقابت های وبلاگ سال 2011 برنده شدم.

من حتی این ایده را برای حذف این همه، اما پس از آن من مواد قدیمی را اصلاح کردم، و متوجه شدم که آنها هنوز هم می توانند برای خوانندگان مفید باشند. بله، برخی از مقالات منسوخ شده اند (اگر من قدرت کافی داشته باشم، علامت های مناسب را دریافت می کنند)، اما سایت، به عنوان مثال، می تواند برای مبتدیان مفید باشد - در اینجا شما می توانید در مورد مفاهیم اساسی اینترنت بخوانید، یاد بگیرید که سفارشی کنید اینترنت، ویندوز یا حتی تصمیم به رفتن به لینوکس. بنابراین به عنوان ها نگاه کنید و یکی را انتخاب کنید که برای شما مناسب است.

و بعد از همه، امیدوارم این بیش از یک وبلاگ باشد، اما یک راهنمای واقعی اینترنت است. این سایت را می توان در حالت دایرکتوری یافت، که در آن تمام مقالات موجود توسط دسته ها ساختار یافته است. و چه کسی می داند شاید مقالات با کیفیت جدید شروع به نمایش در اینجا.

ساندر

Picodi.ru یک پورتال تخفیف از کوپن های بین المللی، متخصص لهستانی در صرفه جویی و خرید ارزان است. قطب ها یکی از ملت های اقتصادی ترین در جهان محسوب می شوند، بنابراین تعجب آور نیست که این نوع پروژه از راه اندازی لهستانی Kodyrabatowe.pl رشد کرده است. چه چیزی می تواند برای این پورتال به یک کاربر اینترنت معمولی در روسیه مفید باشد؟

تلفن های مدرن آندروید بیش از گوشی هستند. شما به مجموعه ای از برنامه های نصب شده، به تاریخ تماس های شما و پیام های متنی، مجموعه عکس ها و بسیاری استفاده می کنید. اما زمان می رود، و دستگاه به طور کامل مرتب شده شروع به کاهش سرعت، اشکال، و یا به سادگی یک نمایش قابل ارائه را به دلیل تراشه بر روی مورد یا خراش بر روی صفحه نمایش از دست می دهد. یک سوال از انتخاب یک تلفن جدید و تغییر گوشی آندروید وجود دارد. و اگر سوال انتخاب، ما اکنون حزب را از بین ببریم، پس از آن "حرکت" به یک تلفن جدید باقی می ماند یک مشکل جدی - من کاملا نمی خواهم تمام اطلاعات را از ابتدا شروع کنم. در اینجا ما در مورد این امروز صحبت خواهیم کرد.

اکثر خوانندگان این وبلاگ، به احتمال زیاد، هرگز با نسخه های کنترل نسخه مواجه نیستند و در آینده ای نزدیک نخواهند بود. و متاسفم. این اختراع بسیار کاربر پسند به طور گسترده ای توسط برنامه نویسان مورد استفاده قرار می گیرد، اما به نظر من، می تواند بسیار مفید باشد و به کسانی که به طور فعال با متون کار می کنند. اما، احتمالا، هیچ سیستم کنترل نسخه وجود ندارد، که آسان خواهد بود شروع به استفاده از "دفتر" (مایکروسافت آفیس) کار. با این وجود، من فکر می کنم که مواد موجود در مقاله ممکن است برای همه خوانندگان جالب باشد.

اگر شما در مورد چگونگی تماشای فیلم تلویزیونی خود در شبکه و دسترسی به اینترنت فکر کردید، این مقاله برای شماست. نه، من می دانم که برخی از تلویزیون ها قابلیت های تلویزیون هوشمند را دارند، اما من هرگز آن را ندیده ام. ظاهرا، بنابراین، گوگل اخیرا یک دستگاه کاملا خیره کننده را نشان داد، بلافاصله با یک احساس به پایان رسید. ما در مورد Media Streamer Chromecast (Chromkast) صحبت می کنیم، نسخه ای کامل و مقرون به صرفه تر از بازیکن مورد علاقه سال گذشته Nexus Q.

Dongle Chromkast، ابعاد که از 2 اینچ تجاوز نمی کند، به پورت HDMI از تلویزیون متصل می شود و به شما امکان می دهد از تماشای محتوای وب جریان لذت ببرید. برای کنترل Streamer، می توانید از هر دستگاه (قرص، رایانه های شخصی، گوشی هوشمند) بر اساس پلت فرم عامل iOS، ویندوز، آندروید یا Mac OS استفاده کنید.

این مقاله به دستگاه حافظه سیستم آندروید اختصاص داده شده است، مشکلات که ممکن است ناشی از فقدان آن و نحوه حل آنها باشد. من خودم تا مدت کوتاهی نداشتم که گوشی آندروید من شروع به طور منظم پیام های مربوط به کمبود حافظه را در هنگام تلاش برای ایجاد یک برنامه خاص آغاز کرد. با وجود این که در توضیحات در بازار، باید حدود 16 گیگابایت وجود داشته باشد، برای من بسیار عجیب بود، و همچنین این حجم را با استفاده از یک کارت حافظه اضافی افزایش دادم. با این حال، مشکل این بود، و قبل از اینکه راه حل مناسب را پیدا کنم، مجبور بودم که دسترسی به ریشه یا بازیابی کامل گوشی را به وضعیت کارخانه نیاز داشته باشم، باید کاملا به طور کامل تینکر کنم.

به تازگی، توجه زیادی به ساختن سیستم های کسب و کار الکترونیکی پرداخت می شود، یا به عنوان آنها نیز نامیده می شود - B2B (کسب و کار به کسب و کار). با توجه به توصیه های در ساخت سیستم های جریان مبادله از هماهنگی فن آوری های اینترنت از بدن - WWW کنسرسیوم: تاکید بر فناوری های XML و ساخت سیستم های اسناد اسناد XML ساخته شده است.

مزیت استفاده از XML در تجارت الکترونیک، راندمان بالا سیستم های B2B در هزینه های پایین برای ایجاد آن به علت نمایش روشن و بصری اطلاعات ساختاری، توانایی استفاده از پروتکل های شبکه مدرن و ایجاد سیستم های کسب و کار در زمان واقعی است.

استقلال ارائه اطلاعات در قالب اسناد XML اجازه می دهد تا متفاوت، شرکت در کسب و کار الکترونیکی، برای تولید مستقل از یکدیگر توسط.

در همه سیستم ها، مبادله معمولا توسط یک طرح مشابه با استفاده از درخواست های HTTP ساخته شده است. پروتکل SSL به عنوان پروتکل SSL اعمال می شود (اما این یک موضوع جداگانه است).

یکی از گزینه های احتمالی برای پردازش پیام های XML، ساخت اجزای BIN / CGI (ISAPI) -News یا COM (سرور) تشکیل یا پردازش اسناد XML است.

از یک طرف، برنامه به عنوان یک مشتری عمل می کند، که در حالت پست یک پرس و جو HTTP را مطرح می کند، از سوی دیگر، یک سرور وب در کنار آن پردازش پرس و جو و پاسخ پردازش شده است. تبادل اطلاعات از اسناد XML استفاده می کند.

یکی از موثرترین گزینه های پیاده سازی، استفاده از تجزیه کننده XML موجود است که از مدل DOM پشتیبانی می کند. چنین تجزیه کننده عرضه توزیع کننده Win`98 یا بخش انتگرال IE 4.7 و بالاتر (برای Win`95) است و نشان دهنده سرور COM واقع در کتابخانه msxml.dll است.

مدل Object Component (COM) داده ها و روش ها را به یک جوهر تک و راهی برای دسترسی به آنها از طریق سیستم رابط بسته بندی شده است. دلفی به سادگی برای دسترسی به کلاس های شیء COM قابل دسترسی است (چندین کلاس ممکن است در یک سرور COM گنجانده شود). دسترسی به اشیاء توسط مقداردهی کردن نمونه کلاس از طریق سیستم رابط انجام می شود. شرح رابط ها توسط زبان تعریف رابط (IDL) انجام می شود، که ممکن است به طور خودکار وسیله ای از رسانه انجام شود.

دلفی به معنای واردات از سرور COM است msxml.dllفایل های توضیحات رابط IDL ساخته شده اند و فایل توصیفی باینری نوع کتابخانه TLB است. این عملیات از طریق منوی سیستم انجام می شود: پروژه | تایپ کتابخانه واردات:(تصویر 1). کادر محاوره ای زیر به نظر می رسد (شکل 2)، که در آن شما می خواهید یک شی COM را انتخاب کنید (در مورد ما، شی به عنوان "Microsoft.XMLDOM (نسخه 2.0)" ثبت شده است و یک فایل TLB ایجاد کنید (دکمه ایجاد واحد) با استفاده از فایل TLB، محیط زیست "Paskalevsky" توضیحات فایل COM سرور را تولید می کند - msxml_tlb.pas

فایل msxml_tlb.pas تمام رابط ها، ثابت ها و سرورهای COM را توصیف می کند.

برای دسترسی به اشیاء عنصر COM، در این دستورالعمل ضروری است استفاده می کند.نام فایل توضیحات کتابخانه را اضافه کنید (msxml_tlb.pas). در زیر ساده ترین برنامه است که از آنالایزر MSXML.dll استاندارد DOM استفاده می کند که سند XML را دانلود می کند و آن را در عنصر جعبه MEMO1 نمایش می دهد.

استفاده می کند. ویندوز، پیام ها، Sysutils، کلاس ها، گرافیک ها، کنترل ها، فرم ها، گفتگوها، Oleserver، MSXML_TLB، StdCtrls؛ نوع tform1 \u003d. کلاس(TFORM) دکمه 1: tbutton؛ memo1: tmemo؛ روش. دکمه 1 کلیک کنید (فرستنده: togject)؛ پایان؛ var فرم 1: tform1؛ پیاده سازی ($ r * .dfm) روش.tform1.button1click (فرستنده: togject)؛ // اعلامیه Soklass Object DomDocument؛ varcodoc: codomdocument؛ // کلاس، سازگار با رابط کاربری iDomDocument؛ vardoc: ixmldocument؛ شروع. // ایجاد یک نمونه از شی DomDocument؛ doc: \u003d codoc.create؛ // یک روش حالت از یک نمونه از شی DomDocument را فراخوانی کنید؛ doc.load ("data.xml")؛ // دسترسی به نمونه مالکیت XML از شی DomDocument؛ memo1.text: \u003d doc.xml؛ پایان؛ پایان.

مفهوم DOM - مدل سند Object

هر سند XML به عنوان مجموعه ای از تعدادی از اشیاء (کلاس ها) نشان داده شده است، که دسترسی به عناصر فردی (زمینه های شی) ممکن است. DOM - رابط دسترسی به هر دو اشیاء ساده DOMString یا PrincesData را توصیف می کند یا عناصر XML جداگانه سند را جدا می کند: DomFragmentElement، Domnode، Domelement.

موارد زیر مهم ترین ویژگی ها و روش های XMLDOMDocument، XMLDOMNODE، XMLDOMNOMELIST هستند. لازم به ذکر است که مدل MSXML.dll XML XML، تجزیه و تحلیل XML XML MSXML.DLL، ارائه شده توسط آنالیز XML XML MSXML.DLL از کنسرسیوم DOM تایید شده توسط مدل W3C استفاده می شود.

شرح کامل تر از اشیاء DOM رابط را می توان یافت

شی XMLDOMDocument
سطح بالایی از سلسله مراتب شی را نشان می دهد و شامل روش هایی برای کار با یک سند است: دانلود، تجزیه و تحلیل، ایجاد عناصر، ویژگی ها، نظرات، نظرات در آن و غیره .
خواص
async اموال شناسایی حالت پردازش فعلی
خطای تجزیه یک مرجع به شیء پردازش خطا xmldomparseError را باز می کند
فعال کردن - غیرفعال کردن تأیید سند
url URL سند را باز می گرداند
مستند سازی حاوی یک مرجع به عنصر ریشه سند به عنوان یک شی XMLDOMemement است.
مواد و روش ها
بار (URL)
loadxml (xmlstring)
یک سند XML را بارگذاری می کند
ذخیره (objtarget) سند XML را در فایل ذخیره می کند
abort قطع روند دانلود و پردازش سند.
createattribute (نام) یک ویژگی جدید را با نام مشخص شده برای مورد فعلی ایجاد می کند.
createnode (نوع، نام، nameSpaceuri) یک گره از نوع مشخص شده و عنوان را ایجاد می کند
createElement (برچسب) یک عنصر سند را با نام مشخص شده ایجاد می کند.
createTextNode (داده ها) متن را درون سند ایجاد می کند
getElementsytagname (Tagname) یک پیوند را به مجموعه ای از موارد سند با نام مشخص شده بازگرداند
nodefromid (idstring) عنصر جستجو توسط شناسه

شی XMLDOMNODE
شی XMLDOMNODE که رابط اصلی DOM را اجرا می کند گره، طراحی شده برای دستکاری با یک گره جداگانه از یک درخت سند. خواص و روش های آن به شما این امکان را می دهد که اطلاعات کامل در مورد گره فعلی دریافت و تغییر دهید - نوع، نام، نام کامل، محتویات آن، لیستی از عناصر کودک و غیره
خواص
nodename، Basename. نام گره فعلی را باز می گرداند.
پیشوند پیشوند فضای نام را باز می گرداند
نوع داده. نوع محتوا گره فعلی را تعریف می کند
nodetype، nodetypestring نوع گره فعلی را باز می گرداند:
ویژگی های. لیستی از ویژگی های گره فعلی را به عنوان مجموعه xmldomnammenmapap باز می گرداند.
متن محتویات پشتیبانی فعلی را در قالب متن باز می گرداند.
xML نمایندگی XML از پشتیبانی فعلی را باز می گرداند.
nodeValue محتویات گره فعلی را باز می گرداند.
childnodes. لیستی از عناصر کودک را به عنوان xmldomnodelist باز می گرداند.
lastchild، lastchild. عنصر اول / آخرین فرزند را باز می گرداند
قبلی، nextsibling عنصر پرستاری قبلی / بعدی را باز می گرداند.
parentnode. حاوی یک مرجع به عنصر والدین است.
مالکیت اشاره گر را به سند بازگرداند که در آن گره فعلی واقع شده است.
مواد و روش ها
appendchild (NewChild) یک عنصر جدید کودک را به گره فعلی اضافه می کند.
insertborefore (newchild، refchild) یک گره کودک را وارد کنید، آن را در زیر قسمت زیر "سمت چپ" گره مشخص شده توسط پارامتر Refchild مشخص کنید.
clonenode (عمیق) یک کپی از عنصر فعلی ایجاد کنید.
getAttribute(نام)
getattributenode. (نام)
setattribute (نام، ارزش)
setattributenode (xmldomattribute)
دسترسی به ویژگی ها (ایجاد، خواندن، نوشتن) شی. نام - نام ویژگی، ارزش - ارزش آن است. مقدار Xmldomattribute شی را باز می گرداند.
repaCechild (NewChild، OldChild) Removechild (OldChild) جایگزینی هدف OldChild از لیست فعلی شرکت های تابعه در NewChild. از بین بردن شیء oldchild
selectSingLende SelectSingLende (PatternString) شی XMLDomNodelist را که توسط الگوی جستجو یا گره اول انتخاب شده است، باز می گرداند
transformnode (Styesheet)
transformnodetObject (سبک، خروجی، خروجی)
یک جدول سبک را برای پشتیبانی از گره فعلی اختصاص می دهد و رشته را به نتیجه پردازش می رساند. یک مرجع به شی DomDocument به عنوان یک پارامتر انتقال می یابد، که در آن دستورالعمل های XSL واقع شده است.

با استفاده از XML در کسب و کار.

برای یک تصویر واضح تر، یک توضیح ضروری است، و چرا همه اینها با آنچه که باید درک کنید، لازم است که چگونه کار می کند:

هنگام ساخت یک سیستم B2B یا شرکت ERP شرکت، هنگام سازماندهی تبادل اطلاعات اسناد XML بین شرکت ها یا شاخه های PROM-I، یک سیستم اطلاعات اثبات شده اثبات شده بر اساس سرورهای وب موجود در پروتکل های HTTP استفاده می شود.

از یک طرف، برنامه به عنوان یک مشتری عمل می کند، که در حالت پست، پرس و جو HTTP را مطرح می کند، از سوی دیگر، سرور وب در کنار آن درخواست پردازش شده و پاسخ است. اسناد XML به عنوان تبادل استفاده می شود.

به عنوان مثال، در یک سیستم ساده شرکت ERP از برنامه حسابداری (حسابداری ACS)، لازم است یک درخواست خاص برای یک فاکتور ایجاد شود و آن را به یک شاخه ای که دارای انبار (ACS انبار) است، انتقال دهد. هنر تنظیم مشابهی از مشکل زمانی است که ایجاد یک B2B از سیستم، زمانی که یک شرکت درخواست دسترسی به محصولات (سفارش خرید برای خرید) از تامین کننده V.

شرکت A و برنامه او به عنوان یک مشتری عمل می کند. انبار در خدمت تامین کننده در WHO دارای یک مجتمع BD انبار در SQL Server است. تبادل از طریق یک تامین کننده وب سرور شرکت انجام می شود.

در زیر، الگوریتم مبادله معمولی زیر است:


شکل 3
  1. شرکت A.آغاز می شود فرآیند A.(سفارش محصول)، که به عنوان یک مشتری وب عمل می کند.
  2. فرآیند A.یک سند XML (به عنوان مثال، یک فاکتور) را تولید می کند و آن را به عنوان یک پرس و جو پست HTTP به سرور تامین کننده وب انتقال می دهد. به عنوان یک URI - یک شناسه درخواست پردازش استفاده می شود. URI ممکن است برای هر نوع اسناد یا فردی برای هر نوع مشابه باشد. این همه به ساختار سرور B2B (وب) بستگی دارد.
  3. وب سرور درخواست را تجزیه و تحلیل می کند و سرور را تولید می کند فرآیند B.با گذراندن یک سند XML به عنوان یک پارامتر.
    فرآیند در وب سرور شروع و پردازش می شود یا به عنوان Page ASP، CGI (ISAPI) - برنامه یا جاوا سورک (برنامه سرور)
  4. فرآیند B.- یک درخواست را به سرور پایگاه داده SQL تولید می کند.
  5. SQL Server عملیات لازم را در پایگاه داده انجام می دهد، پاسخ را تشکیل می دهد و آن را باز می گرداند. فرآیند B..
  6. در پاسخ از SQL Server فرآیند B. یک سند XML (پاسخ) را تولید می کند و به عنوان یک پاسخ به درخواست HTTP به برنامه مشتری اجازه می دهد.
  7. علاوه بر این، بسته به وضعیت در طرف مشتری، یا یک پرس و جو جدید HTTP تشکیل شده است، یا جلسه به پایان می رسد.

چند کلمه در مورد سازمان مدیریت سند.

حاکمیت کلی توسعه سیستم تبادل XML عبارت است از:

  • اول- توسعه مدار جریان اسناد الکترونیکی و ساختار آنها؛
  • دوم- توسعه جداول توابع فرآیندهای (Subprocesses) I.E. چه تابع در رابطه با سند XML هر فرآیند را اجرا خواهد کرد.

هر سند XML، مانند یک سند HTML باید شامل یک هدر پیام (زندانی اطلاعات) و یک پیام پیام (برای پرس و جو این اطلاعات با برچسب گذاری برای پاسخ به درخواست). به منظور سند XML به درستی شکل گرفته است، لازم است که دو جزء آن از "هدر" و "درخواست" به برچسب های فریم، به عنوان مثال لازم است. دیدگاه سند استاندارد زیر ارائه شده است:

عنوان (شکل 4)، در مقایسه با HTML سند، باید شامل انواع اطلاعات خدمات، از جمله اطلاعات مربوط به نوع سند انتقال و پردازش پردازش. پردازش اطلاعاتی سند دریافت شده است، I.E. بخش معنی دار توسط برچسب طراحی شده است. لازم به ذکر است که ساختار هدر باید برای همه انواع اسناد متحد باشد.

برای فرایند در حال اجرا توسط سرور، الگوریتم پردازش ترجیحا (اما لازم نیست) برای ساخت به شرح زیر است:


شکل 6

برخی از لحظات اصلی هنگام ایجاد یک بخش مشتری

همانطور که قبلا توضیح داده شد، هنگام ایجاد یک سند XML از نمایندگی خود در قالب یک مدل DOM استفاده می کند. در زیر نمونه ای از متن متن دلفی برنامه هدر پیام XML است.

روش.tthread1.headercreate (فرستنده: togject)؛ var // اعلامیه های کلاس برای ایجاد ضروری است codoc: codomdocument؛ // XMLDOMDocument Object doc: domdocument؛ R: ixmldomelement؛ گره: ixmldomelement؛ // domtext txt: ixmldomtext؛ // domattribute attr: ixmldomattribute؛ شروع. // ایجاد سند DOM doc: \u003d codoc.create؛ doc.set_async (نادرست)؛ // شروع اولیه DOM DOM doc.loadXML ("
"); // ایجاد domelement (برچسب<فرستنده.>) گره: \u003d doc.createelement ("فرستنده")؛ // ایجاد یک گره متن " LLC "Typhoon"" TXT: \u003d doc.createtextnode ("LLC" Typhoon ")؛ // اختصاص یک گره<فرستنده.\u003e ارزش // گره متن " LLC "Typhoon"" node.appendchild (txt)؛ // اضافه کردن یک مورد<فرستنده.\u003e در ریشه سند به عنوان یک شرکت تابعه R.Appendchild (گره)؛ <از جانب.> گره: \u003d doc.createelement ("از")؛ TXT: \u003d doc.createtextnode ("http://tayfun.ru/xml/default.asp")؛ node.appendchild (txt)؛ R.Appendchild (گره)؛ // عملیات مشابه برای برچسب<به.> گره: \u003d doc.createelement ("به")؛ txt: \u003d doc.createtextnode ("http://irbis.ru")؛ node.appendchild (txt)؛ R.Appendchild (گره)؛ // ایجاد domelement () گره: \u003d doc.createelement ("typedocument")؛ // ایجاد یک گره xmldomattribute ATT: \u003d doc.createattribute ("ID"، "ORDER")؛ // node.appendchild (ATT)؛ R.Appendchild (گره)؛ پایان؛

لازم به ذکر است که اعلام Codoc: codomdocument و doc: متغیر DomDocument، و همچنین ایجاد روش ایجاد (doc: \u003d codoc.create؛) یک بار انجام می شود. اعلام متغیر در بخش توصیف متغیرهای جهانی است و نه در روش محلی، همانطور که برای دید در این مثال نشان داده شده است (I.E. یک متغیر جهانی از ماژول برنامه یک نوع DomDocument نوع).

نتیجه برنامه فوق، هدر ایجاد شده است، در رابطه با مثال ما از سند XML: در شکل 5 نشان داده شده است.


شکل 5


شکل 6

مزیت اصلی انتقال اطلاعات در قالب اسناد XML این است که ممکن است یک پیام را با استفاده از ساختار مستقل جداول جداول در DBMS هر دو بر روی دریافت شده و در سمت انتقال ارسال کنید. با استفاده از مثال ما، اجازه دهید آن را به انتقال اطلاعات در مورد فاکتورهای شرکت A، از DBMS ساختار نشان داده شده در شکل 6

برای ایجاد یک سند XML حاوی یک فاکتور، یک درخواست SQL اولیه (پرس و جو A) با اطلاعات مربوط به فاکتور:

انتخاب کنید * از invoice_general جایی که invoicenum \u003d: num انتخاب کنیدمحصولات، قدم زدن، قیمت، hz_cod از جانب.کالا جایی که invoicenum \u003d: num //: num - پارامتر که شماره فاکتور را مشخص می کند.

در زیر بخشی از برنامه تشکیل بدن سند XML است:

روش. tthread1.databodycreate (فرستنده: tobject)؛ var // کلاس ها و xmldomocument // codoc: codomdocument؛ // باید جهانی باشد، برای کل ماژول. // doc: domdocument؛ // اعلام از اشیاء domelement R: ixmldomelement؛ // domelement؛ گره، node2: ixmldomelement؛ node3، node4: ixmldomelement؛ // domtext txt: ixmldomtext؛ STR: رشته؛ // invoicenumber: عدد صحیح؛ - متغیر جهانی - // Masching 987654 // Querya، Queryb: رشته؛ - متغیر جهانی، // حفظ درخواست به درخواست // Querya - درخواست و اطلاعات عمومی در مورد Infoice // Queryb - اطلاعات پرس و جو B در مورد کالاهای شرح داده شده در // infoice (متن را ببینید) شروع. query.close؛ // مشاهده متن "درخواست A" query.text: \u003d Querya؛ // اعدام درخواست query.execsql؛ query.open؛ // آدرس عنصر ریشه را دریافت کنید r: \u003d doc.get_documentelement؛ node2: \u003d doc.createelement ("درخواست")؛ // ایجاد domelement (برچسب) گره: \u003d doc.createelement ("فاکتور")؛ // اضافه کردن یک آیتم به ریشه R.Appendchild (Node2)؛ // اضافه کردن یک مورد در node2 Appendchild (گره)؛ // ایجاد domelement (برچسب) node3: \u003d doc.createelement ("decurture")؛ // اضافه کردن یک مورد در گره Appendchild (Node3)؛ // درخواست تجدید نظر به فیلد "Decurture" str: \u003d query.fieldbynamename ("decurture"). Asspring؛ // ایجاد یک گره متن \u003d مقدار فیلد // ارزش تکالیف گره // گره متن، خط متغیر node.appendchild (txt)؛ // عملیات مشابه برای برچسب , , // , // (فیلد DB "Consignee") گره: \u003d doc.createelement ("مقصد")؛ // نام زمینه پایگاه داده ممکن است با نام همزمان نباشد str: \u003d query.fieldbyname ("consignee") .ASTRING؛ // تگا، در این مزیت استفاده txt: \u003d doc.createtextnode (str)؛ // رابط DOM قبل از DBMS دارای پشتیبانی از رابط XML، // نوع اوراکل 8I یا MS SQL 2000 node.appendchild (txt)؛ ... // تشکیل یک درخواست برای مشخصات کالا // درخواست دسترسی را بسته می کند query.close؛ // مشاهده متن "درخواست در"، اطلاعات. درباره محصولات query.text: \u003d queryb؛ // اختصاص مقادیر پارامتر query.params.asinteger: \u003d invoicEnumber؛ // اعدام درخواست query2.execsql؛ // باز کردن دسترسی به درخواست داده ها query.open؛ // ایجاد domelement (برچسب) node3: \u003d doc.createlement ("imems")؛ // اضافه کردن یک مورد در گره Appendchild (Node3)؛ // چرخه بر روی تمام درخواست ها در حالی که نه eof.Query. انجام دادن. شروع node4: \u003d doc.createelement ("imem")؛ // اضافه کردن یک مورد در node3.appendchild (node4)؛ // تولید داده برای برچسب STR: \u003d query.fieldbyname ("قیمت"). Asspring؛ txt: \u003d doc.createtextnode (str)؛ node.appendchild (txt)؛ ... // عملیات مشابه برای برچسب ها , , پایان؛ پایان؛

به عنوان یک نتیجه از این روش، متن زیر از سند XML تشکیل شده است:


روش باز برای ایجاد پرس و جو استفاده می شود. ixmlhttprequest:

روش. Open (Const Bstrmethod، - روش type \u003d "post" bstrurl، - آدرس سرور Varasync URL، - حالت ارتباطی ناهمزمان / همزمان \u003d TRUE BSTRUSER، - نام کاربری برای احراز هویت BSTRPassword) - رمز عبور

ایجاد یک بخش سرور از پردازش سند

همانطور که قبلا ذکر شد، پردازش درخواست HTTP را می توان یا برنامه های کاربردی CGI یا Servlets جاوا انجام داد. گزینه های ممکن برای نوشتن صفحات ASP. اما در این مورد، انتقال داده تنها توسط "دریافت" با استفاده از رشته پرس و جو امکان پذیر است. اگر چه، پردازش HTTP از درخواست Page ASP کارآمدتر از برنامه CGI است. با این حال، به نظر من، بدون هیچ گونه تفاوت، نحوه پردازش، و مهمتر از همه برای حل این سوال - نحوه ساخت یک برنامه پردازش، و نه با چه چیزی.

اگر ما گزینه های تشکیل سند XML را از فصل قبلی بررسی کردیم، سپس وظیفه برنامه سرور مخالف اسناد XML است. در زیر بخشی از برنامه است که سند XML را تجزیه و تحلیل می کند:

روش.tthread1.dataparser (فرستنده: tobject)؛ var // اعلام از اشیاء domelement R، fnode: ixmldomelement؛ Str، نام فایل: رشته؛ PARM: رشته؛ // اعلام Soklass و CodocxML، Codocxsl، Codocresult: CodomDocument؛ // XMLDOMDocument Object XMLDOC، XSLDOC، نتیجه DOMDocument؛ // httpstr: رشته؛ - یک متغیر جهانی حاوی رشته پرس و جو HTTP شروع. xmldoc: \u003d codocxml.Create؛ xmldoc.loadxml (httpstr)؛ // آدرس عنصر ریشه را دریافت کنید r: \u003d doc.get_documentelement؛ // به دست آوردن ارزش عنصر fnode: \u003d r.selectorsinglenode ("// typedocument")؛ // دریافت مقدار attribute id \u003d "سفارش" نام فایل: \u003d fnode.getattibute ("id")؛ // و شکل دادن به نام فایل order.xsl نام فایل: \u003d filename + ". XSL"؛ // ایجاد یک سند XSLDOC XSLDOC: \u003d CODOCXSL.CREATE؛ xsldoc.loadxml (filename)؛ // ایجاد یک سند XMLDOC نتیجه: \u003d codocresult.create؛ // تنظیم حالت پردازش همزمان رده doc.set_async (false)؛ // نصب مجدد چک کردن رده doc.validateonparase: \u003d درست؛ // COLLAPSE XMLDOC توسط XSL TEMPLATE XMLDOC.TransFormNOC، نتیجه DOC (XSLDOC، نتیجه DOC)؛ // متغیر STR به مقدار متن اختصاص داده شده است // سند نتیجه str: \u003d رده doc.text؛ // عنصر جستجو fnode: \u003d r.selectorsinglenode ("// invoicnumber")؛ // و ارزش عنصر را دریافت کنید Parm: \u003d fnode.text؛ // درخواست دسترسی را بسته می کند query.close؛ query.text: \u003d str؛ // اختصاص مقدار پارامتر query.params.ASTRING: \u003d PARM؛ // اعدام درخواست query.execsql؛ پایان؛

کل طیف وسیعی از تجزیه این است که قالب XSL را اعمال کنید، که برای هر نوع سند به صورت جداگانه تشکیل شده است. نتیجه تجزیه و تحلیل رشته پرس و جو SQL است. در نتیجه، اجرای رشته پرس و جو SQL تولید شده تغییرات لازم را در DBMS انجام خواهد داد.

مزیت استفاده از تجزیه و تحلیل از طریق قالب نیز در این واقعیت است که برخی از انعطاف پذیری داده ها را تبدیل می کند و استقلال کامل عملیات الگوریتم از کد برنامه به دست می آید. در زیر متن TEMPLATE XSL است که برای پردازش نوع سند استفاده می شود.

مقادیر TABREG (از، به، typedoc، body) را وارد کنید (" ", "", "") وارد کالا (invoicenumber، نام، قیمت، کیفیت، کیفیت) (": num"، " ", "", " ")

توضیح مثال فوق، باید توجه داشت که استفاده از جفت برچسب ها و رسمی است، زیرا پس از تجزیه، حداقل یک گره باید در سند XML حاصل شود. روش نتیجه doc.text مقدار متنی به دست آمده در طی تجزیه و تحلیل نتایج XML DocumentDoc را تعیین می کند. در این مورد، ارزش این است که جفت برچسب ها قاب و I.E. ما یک درخواست SQL را تشکیل داده ایم.

یکی دیگر از ویژگی های نوشتن برنامه باید امکان استفاده از پارامتر SQL را ذکر کند : num با استفاده از پارامتر اجازه می دهد تا متن XSL را ساده کنید. تعریف مقدار عناصر مربوطه از گره های سند XML ابتدا تعیین نام گره مربوطه را تعیین می کند، به عنوان مثال:

به طور خلاصه درباره XSL

اختصار XSL از زبان قالب بندی توسعه یافته - جدول قالب بندی جدول سبک (داده های XML) می آید. همانطور که از Header Language Language Extensible (XSL) روشن است (XSL) برای فرمت داده های XML استفاده می شود. با تعریف W3C XSL شامل دو بخش است:

  • XSLT - تغییر XSL. زبان مورد استفاده برای تبدیل یا فرمت (تبدیل) اسناد XML. بنابراین، با استفاده از XSLT، ما می توانیم بخش های مختلفی از فرم های مختلف داده ها و فرم های ارائه داده را دریافت کنیم.
  • عناصر قالب بندی این عناصر شامل تمام عناصر طراحی داده های تایپوگرافی، پس از پردازش آنها با استفاده از XSL پردازش می شوند. فقط برای تشکیل صفحات HTML استفاده می شود.

با استفاده از XSLT، می توانیم داده ها را از فایل XML مورد نیاز خود انتخاب کنیم و آنها را در فرم ترتیب دهیم تا کاربر را ارائه دهیم. به عنوان مثال، در مورد ما، داده های XML را به عنوان یک پرس و جو SQL تبدیل کردیم. برنامه کلاسیک XSL معمولا داده های قالب بندی به عنوان صفحات HTML یا نمایندگی نادر در قالب فایل های RTF است.

فایل XSL Template (الگو) را توصیف می کند، بر اساس آن تبدیل داده XML انجام می شود. بازگشت به قالب های XSL، عناصر زیر را می توان در XSLT (دستورالعمل ها) اختصاص داد:

دستورالعمل XSL شرح
xSL: اعمال قالب دستورالعمل، نشان دهنده استفاده از ویژگی های مناسب قالب select \u003d "name template"
xSL: ویژگی درخت ویژگی را ایجاد می کند و آن را به عنصر خروجی اضافه می کند، نام \u003d "attribute name" پارامتر، فضای نامی - URI در فضای نام (پیشوند نام فضای نام)
xSL: Call-template باعث می شود یک قالب، نام ویژگی \u003d "URI در قالب"
xSL: انتخاب کنید
xSL: زمانی که.
xSL: در غیر این صورت.
ساخت یک انتخاب با شرایط XSL: هنگامی که expr \u003d "محاسبه بیان در اسکریپت"،
زبان \u003d "نام زبان"
تست \u003d "بیان محاسبه شده"
xSL: نظر یک نظر در مورد سند خروجی تولید می کند
xSL: کپی کنید
xSL: کپی-از
گره فعلی را در منبع خروجی کپی می کند و یا قطعه سند را به گره وارد می کند که در آن select \u003d "نام گره منبع" را انتخاب می کند
xSL: عنصر. یک عنصر خروجی را با نام، نام ویژگی \u003d "نام عنصر"، namespace \u003d "uri مرجع به فضای نام" ایجاد می کند
xSL: برای هر کدام دوباره اعمال قالب به تمام گره های لیست گره، ویژگی Attribute را انتخاب کنید لیستی از گره ها.
xSL: اگر. بررسی شرایط توسط ویژگی آزمون به عنوان یک عبارت تنظیم می شود
xSL: شامل شامل یک قالب خارجی، ویژگی href \u003d "مرجع URI"
xSL: خروجی نتیجه خروجی را مشخص می کند، ویژگی روش ممکن است "XML"، "HTML" یا "متن" داشته باشد
xSL: PARAM مقدار پارامتر را مشخص می کند، نام \u003d "نام پارامتر نام"، select \u003d "value"
xSL: آموزش پردازش دستورالعمل ها را برای پردازش، نام ویژگی \u003d "دستورالعمل فرآیند نام" ایجاد می کند
xSL: مرتب سازی بر. انواع گره ها، ویژگی ها را انتخاب کنید \u003d "node name"، نوع داده \u003d نوع داده ("text" | "شماره" | qname)، سفارش \u003d جهت مرتب سازی ("صعودی" | "نزولی")
xSL: شیوه ای سند Template XSL را تعریف می کند، عنصر ریشه برای XSLT است
xSL: الگو قالب XSL را مشخص می کند، نام \u003d "attrifix prefix URI به نام الگو"، match \u003d "توجه داشته باشید به گره که الگو اعمال می شود"
xSL: متن ایجاد متن به جریان خروجی، غیر فعال کردن خروجی-خروجی-فرار \u003d "بله" یا "نه" ویژگی نشان می دهد توانایی تولید شخصیت های ESC
xSL: ارزش ارزش گره انتخاب شده را به عنوان متن، انتخاب \u003d "اشارهگر به گره" مشخص می کند که از آن مقدار گرفته شده است
xSL: متغیر مقدار مرزهای متغیر را مشخص می کند، نام attribute \u003d "نام متغیر"، select \u003d "محاسبه مقدار متغیر"
xSL: با پارامتر پارامتر را به الگو اعمال می کند، نام Attribute \u003d "نام پارامتر"، Select \u003d Expression برای محاسبه زمینه فعلی، مقدار پیش فرض "."

نتیجه

در نتیجه، لازم به ذکر است که استفاده از تجزیه کننده استاندارد XML msxml.dllاین تنها ابزار تجزیه و ایجاد اسناد XML نیست. به عنوان مثال، برای ایجاد اسناد XML به طور موثر از اجزای استفاده کنید tpageProduserو ttableproduser. اما این مقاله تنها بر گستره و امکان استفاده از یک مدل DOM در عمل تاکید دارد.

نویسنده برای بازخورد مربوط به رابطه موضوع، محتوای کلی، سبک ارائه، و همچنین تمام نظرات دیگر که به بهبود کیفیت نوشتن مجموعه ای از مقالات و انتشار کتاب هایی که پوشش می دهد، بسیار سپاسگزار خواهند بود موضوع عملی عملی استفاده از اسناد XML در تجارت الکترونیک. برای کسب اطلاعات بیشتر در مورد کاربرد کاربردی استفاده از اسناد الکترونیکی، می توانید از www.edocs.al.ru در وب سایت نویسنده یاد بگیرید، همچنین برنامه های متون و نمونه های منبع را برنامه ریزی کرده اید.

زبان XML به طور فزاینده ای برای ذخیره اطلاعات استفاده می شود، آن را بین برنامه های کاربردی و گره های وب به اشتراک می گذارد. در بسیاری از برنامه های کاربردی، این زبان به عنوان ذخیره سازی اولیه داده ها در دیگران استفاده می شود - برای صادرات و وارد کردن داده های XML. از این به دنبال آن است که زمان آن است که توسعه دهندگان در مورد نحوه استفاده از داده های XML در برنامه های خود فکر کنند.

در این مقاله، ما مدل XML Object Object (DOM) و پیاده سازی آن توسط مایکروسافت - مایکروسافت XML DOM را در نظر خواهیم گرفت.

XML DOM یک مدل شی است که اشیاء توسعه دهنده را برای دانلود و پردازش فایل های XML فراهم می کند. مدل شیء شامل اشیاء اصلی زیر است: XMLDOMDocument، XMLDOMNODELIST، XMLDOMNODELIST، XMLDOMNAMEDNOMAP و XMLDomPARSEErrorError. هر یک از این اشیاء (به جز XMLDomParseError) شامل خواص و روش ها برای به دست آوردن اطلاعات در مورد شی، دستکاری مقادیر و ساختار جسم، و همچنین حرکت در امتداد ساختار سند XML است.

اشیاء اصلی XML DOM را در نظر بگیرید و چند نمونه از استفاده از آنها را در Borland Delphi ارائه دهید.

با استفاده از XML DOM در Borland Delphi

به منظور استفاده از مایکروسافت XML DOM در برنامه های دلفی، شما باید کتابخانه نوع مناسب را به پروژه وصل کنید. برای انجام این کار، ما پروژه را اجرا می کنیم کتابخانه نوع واردات و در پانل محاوره کتابخانه نوع واردات، کتابخانه مایکروسافت XML نسخه 2.0 (نسخه 2.0) را انتخاب کنید، که معمولا در فایل ویندوز \\ system \\ msxml.dll قرار دارد

پس از فشار دادن دکمه ایجاد واحد، ماژول رابط MSXML_TLB ایجاد می شود، که به ما اجازه می دهد از اشیاء XML DOM استفاده کنیم: DomDocument، XMLDocument، XMLHttPrequest و تعدادی از دیگران که در کتابخانه msxml.dll اجرا شده اند. لینک به ماژول MSXML_TLB باید در لیست استفاده شود.

XML دستگاه DOM

مدل شیء سند نشان دهنده یک سند XML به شکل یک ساختار درختی است که شامل شاخه ها می شود. رابط های نرم افزاری XML DOM اجازه می دهد تا برنامه های کاربردی را برای حرکت به درخت سند و دستکاری شاخه های خود را. هر شاخه می تواند نوع خاصی داشته باشد (Domnodetype)، بر اساس آن والدین و شرکت های تابعه تعیین می شود. در اکثر اسناد XML، شما می توانید شاخه های عنصر، ویژگی ها و شاخه های متن را پیدا کنید. ویژگی ها (ویژگی) نوع خاصی از شاخه هستند و شاخه های فرعی نیستند. برای مدیریت ویژگی، روش های خاص ارائه شده توسط اشیاء XML DOM استفاده می شود.

علاوه بر اجرای رابط های توصیه شده در جهان جهانی وب (W3C)، مایکروسافت XML DOM شامل روشهایی است که از XSL، الگوهای XSL، فضاهای فضایی و انواع داده ها پشتیبانی می کند. به عنوان مثال، روش SelectNodes به شما امکان می دهد از XSL Templates Syntax (Syntax الگوی XSL XSL) برای جستجوی شاخه ها در یک زمینه خاص استفاده کنید و روش TransformNode از استفاده از XSL برای انجام تحولات پشتیبانی می کند.

تست سند XML

به عنوان نمونه ای از یک سند XML، کاتالوگ CD-ROM موسیقی را انتخاب کنید، که دارای ساختار زیر است:

Empire Burlesque باب دیلن ایالات متحده آمریکا. کلمبیا 10.90 1985 قلب خود را پنهان کن bonnie tylor. انگلستان. سوابق CBS 9.90 1988 ... قلبم را رها کن. جو کوکر ایالات متحده آمریکا. الی 8.20 1987

در حال حاضر ما آماده هستیم تا با توجه به مدل شیء XML DOM، آشنایی با آن با شیء XMLDOMDocument شروع کنیم.

سند XML - XMLDOMDocument Object

کار با سند XML با دانلود آن آغاز می شود. برای انجام این کار، از روش بار استفاده می کنیم که تنها یک پارامتر را نشان می دهد که URL سند دانلود شده را نشان می دهد. هنگام دانلود فایل ها از یک دیسک محلی، فقط نام فایل کامل مشخص شده است (فایل: /// پروتکل در این مورد می تواند حذف شود). اگر سند XML به عنوان یک رشته ذخیره شود، باید از روش loadXML استفاده شود تا چنین سند را دانلود کند.

برای کنترل روش دانلود یک سند (همگام یا ناهمگام)، اموال ASYNC استفاده می شود. به طور پیش فرض، این ویژگی درست است، نشان می دهد که سند بارگیری شده به صورت یکنواخت و کنترل به برنامه بازگردانده می شود، حتی تا زمانی که سند به طور کامل بارگذاری شود. در غیر این صورت، سند همزمان شده است، و سپس شما باید ارزش اموال ReadyState را بررسی کنید تا متوجه شوید، سند بارگذاری شده یا نه. شما همچنین می توانید یک Handler رویداد OnreadyStateChange ایجاد کنید که هنگام تغییر ارزش اموال Readystate کنترل را دریافت خواهید کرد.

در زیر نشان داده شده است چگونه برای دانلود سند XML با استفاده از روش بار:

کاربران ... msxml_tlb ... روش tform1.button1click (فرستنده: togject)؛ var xmldoc: ixmldomocument؛ شروع xmldoc: \u003d codomdocument.create؛ xmldoc.async: \u003d اشتباه؛ xmldoc.load ('c: \\ data \\ data.xml')؛ // // در اینجا کد است که Manipulates // سند XML و شاخه های آن // xmldoc: \u003d nil؛ پایان؛

پس از بارگذاری سند، می توانیم به خواص آن اشاره کنیم. بنابراین، اموال Nodename شامل ارزش #document، اموال Nodetypestring یک مقدار سند است، اموال URL فایل: /// C: /DATA/DATA.XML مقدار.

پردازش اشتباه است

از علاقه خاص، خواص مرتبط با پردازش سند زمانی که بارگذاری می شود. بنابراین، Property ParseError یک شی XMLDomParSerororororor را که حاوی اطلاعات خطا است که در طی فرآیند پردازش رخ داده است، باز می گرداند.

برای نوشتن یک handler خطا، می توانید کد زیر را اضافه کنید:

var XMLError: ixmldomparseError؛ ... xmldoc.load ('c: \\ data \\ data.xml')؛ XMLError: \u003d XMLDOC.ParseError؛ اگر XMLError.ErrorCode.<> 0 سپس // // در اینجا ما خطا را پردازش می کنیم // else memo1.lines.add (xmldoc.xml)؛ ... xmldoc: \u003d nil؛

برای پیدا کردن اطلاعاتی که در صورت خطا در مورد اطلاعات بازگشته است، قسمت زیر را تغییر دهید:

Empire Burlesque باب دیلن ایالات متحده آمریکا. کلمبیا 10.90 1985

حذف عنصر بسته شدن در خط دوم:</p><p> <CD> <TITLE>Empire Burlesque <ARTIST>باب دیلن</ARTIST> <COUNTRY>ایالات متحده آمریکا.</COUNTRY> <COMPANY>کلمبیا</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>حالا کد را بنویسید که خواص Xmldomparseororororor را بازگرداند:</p><p>XMLError: \u003d XMLDOC.ParseError؛ اگر XMLError.ErrorCode.<> 0 سپس با XMLError، Memo1.lines شروع به اضافه کردن ('فایل:' + URL)؛ اضافه کردن ('کد:' + inttostr (ERRORCODE))؛ اضافه کردن ('خطا:' + دلیل)؛ اضافه کردن ('متن:' + srctext)؛ اضافه کردن ('ردیف:' + inttostr (خط))؛ اضافه کردن ('موقعیت:' + inttostr (linspos))؛ ENT ELTER MEMO1.LINES.ADD (XMLDOC.XML)؛ پایان؛</p><p>و درخواست ما را انجام دهید. به عنوان یک نتیجه، ما اطلاعات خطای زیر را به دست می آوریم.</p> <p>همانطور که از مثال فوق دیده می شود، اطلاعاتی که توسط Object XMLDomParseError بازگردانده می شود، به اندازه کافی برای تعیین خطا و درک علت وقوع آن است.</p> <p>حالا عنصر بسته شدن را بازگردانید <TITLE> در سند ما و ادامه بحث XML DOM.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> دسترسی به درخت سند</h2> <p>برای دسترسی به درخت سند، شما می توانید عنصر ریشه را دریافت کنید و سپس از طریق شرکت های تابعه خود، یا برخی شاخه های خاص را پیدا کنید. در اولین مورد، ما عنصر ریشه را از طریق اموال مستندسازی دریافت می کنیم، که یک شی از نوع XMLDOMNOMNODE را باز می کند. در زیر نشان داده شده است که چگونه از اموال مستند سازی استفاده کنید تا محتویات هر عنصر کودک را بدست آورید:</p><p>var node: ixmldomnode؛ ریشه: ixmldomelement؛ من: عدد صحیح؛ ... ریشه: \u003d xmldoc.documentelement؛ برای من: \u003d 0 به root.childnodes.length-1 شروع گره: \u003d root.childnodes.item [i]؛ memo1.lines.add (node.text)؛ پایان؛</p><p>برای سند XML ما، متن زیر را دریافت می کنیم.</p> <p>اگر ما علاقه مند به نوعی شاخه یا شاخه خاصی در زیر اولین شرکت تابعه هستیم، می توانیم از روش nodefromid یا روش GetElementbytagname از شی XMLDOMDocument استفاده کنیم.</p> <p>روش nodefromid نیاز به مشخص کردن یک شناسه منحصر به فرد تعریف شده در طرح XML یا تعریف نوع سند (DTD) دارد و یک شاخه را با این شناسه باز می کند.</p> <p>روش GetElementByTagname نیاز به نشان دادن یک رشته با یک عنصر خاص (برچسب) دارد و تمام شاخه ها را با این مورد باز می گرداند. در زیر نشان داده شده است که چگونه از این روش برای پیدا کردن تمام هنرمندان در دایرکتوری CD-ROM ما استفاده کنید:</p><p>گره ها: ixmldomnodelist؛ گره: ixmldomnode؛ ... گره ها: \u003d xmldoc.getElementsbytagname ('هنرمند')؛ برای من: \u003d 0 به nodes.length-1 شروع گره: \u003d nodes.Item [i]؛ memo1.lines.add (node.text)؛ پایان؛</p><p>برای سند XML ما، متن زیر را دریافت خواهیم کرد.</p> <p>توجه داشته باشید که روش انتخاب XMLDOMNode به روش انعطاف پذیر تر برای دسترسی به شاخه های سند ارائه می دهد. اما در مورد آن کمی پایین تر است.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> شعبه سند - Xmldomnode شی</h2> <p>شی XMLDOMNODE یک شاخه سند است. ما در حال حاضر با این شیء مواجه شده ایم، زمانی که عنصر ریشه سند به دست آمد:</p><p>ریشه: \u003d xmldoc.documentelement؛</p><p>برای به دست آوردن اطلاعات در شاخه سند XML، می توانید از خواص شی XMLDomNode استفاده کنید (جدول 1).</p> <p>برای دسترسی به داده های ذخیره شده در شاخه، معمولا از ملک NodeValue (در دسترس برای ویژگی ها، شاخه های متن، نظرات، دستورالعمل های پردازش و بخش های CDATA) یا ویژگی های متن که محتوای متن شاخه یا ملک NodetypedValue را باز می گرداند، استفاده کنید. دومی، با این حال، تنها می تواند برای شاخه های با عناصر تایپ شده استفاده شود.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> حرکت در درخت سند</h3> <p>شی XMLDOMNode راه های مختلفی را برای حرکت از طریق درخت سند فراهم می کند. به عنوان مثال، برای دسترسی به شعبه والدین، اموال Parentnode استفاده می شود، دسترسی به شاخه های کودک از طریق خواص Childnodes (XMLDChild نوع)، firstchild و lastchild (نوع xmldomnode) و غیره انجام می شود. املاک مالکیتی یک شی XMLDocument را که سند XML را شناسایی می کند، باز می کند. خواص فوق باعث می شود که از طریق درخت سند حرکت کند.</p> <p>حالا من تمام شاخه های سند XML را برطرف خواهم کرد:</p><p>ریشه: \u003d xmldoc.documentelement؛ برای من: \u003d 0 به root.childnodes.length-1 شروع گره: \u003d root.childnodes.item [i]؛ اگر node.haschildnodes سپس getchilds (گره، 0)؛ پایان؛</p><p>همانطور که در بالا ذکر شد، شی انتخاب شده XMLDomNode یک راه انعطاف پذیر تر برای دسترسی به شاخه های سند را فراهم می کند. علاوه بر این، یک روش SelectSingLende وجود دارد که تنها شاخه اول سند را باز می کند. هر دو این روش ها به شما این امکان را می دهد که قالب های XSL را برای جستجوی شاخه ها مشخص کنید.</p> <p>فرآیند استفاده از روش انتخابی را در نظر بگیرید تا تمام شاخه هایی را که دارای شاخه و تورم هستند، استخراج کنید.</p><p>ریشه: \u003d xmldoc.documentelement؛ گره ها: \u003d root.selectnodes ('cd / price')؛</p><p>مجموعه گره ها تمام شاخه های CD قیمت Switter قرار می گیرند. بحث در مورد الگوهای XSL کمی بعد بازمی گردد.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> دستکاری توسط شاخه های دختر</h3> <p>برای دستکاری از شرکت های تابعه، می توانیم از روش های شی XMLDOMNODE استفاده کنیم (جدول 2).</p> <p>به منظور حذف کامل رکورد دیسک اول، شما باید کد زیر را انجام دهید:</p><p>var xmldoc: ixmldomocument؛ ریشه: ixmldomnode؛ گره: ixmldomnode؛ xmldoc: \u003d codomdocument.create؛ xmldoc.async: \u003d اشتباه؛ xmldoc.load ('c: \\ data \\ data.xml')؛ // ریشه عنصر ریشه: \u003d xmldoc.documentelement؛ گره: \u003d ریشه؛ // حذف اولین شرکت فرعی node.removechild (node.firstchild)؛</p><p>لطفا توجه داشته باشید که در این مثال ما اولین شرکت تابعه را حذف می کنیم. نحوه حذف اولین عنصر اول شرکت تابعه، در زیر نشان داده شده است:</p><p>var xmldoc: ixmldomocument؛ ریشه: ixmldomnode؛ گره: ixmldomnode؛ xmldoc: \u003d codomdocument.create؛ xmldoc.async: \u003d اشتباه؛ xmldoc.load ('c: \\ data \\ data.xml')؛ // ریشه عنصر ریشه: \u003d xmldoc.documentelement؛ // و اولین گره فرعی: \u003d root.firstchild؛ // حذف اولین شرکت فرعی node.removechild (node.firstchild)؛</p><p>در مثال بالا، ما شاخه اول را حذف نکردیم. <CD>…</CD>، و اولین عنصر شاخه - <TITLE>….

در حال حاضر یک شاخه جدید اضافه کنید در زیر یک کد نشان می دهد که چگونه یک رکورد جدید از موسیقی CD-ROM را اضافه کنید:

var newnode: ixmldomnode؛ کودک: ixmldomnode؛ ... // ایجاد یک شاخه جدید - newnode: \u003d xmldoc.createnode (1، 'cd'، '')؛ // اضافه کردن عنصر کودک: \u003d xmldoc.createnode (1، عنوان "، '')؛ // اضافه کردن یک عنصر newnode.appendchild (کودک)؛ // و ارزش آن را از child.Text تنظیم کنید. Text: \u003d 'Pink Floyd'؛ // اضافه کردن عنصر <ARTIST> کودک: \u003d xmldoc.createnode (1، هنرمند "، '')؛ // اضافه کردن یک عنصر newnode.appendchild (کودک)؛ // و ارزش آن را از Child.Text: \u003d 'Division Bell'؛ // اضافه کردن عنصر <COUNTRY> کودک: \u003d xmldoc.createnode (1، "کشور"، '')؛ // اضافه کردن یک عنصر newnode.appendchild (کودک)؛ // و ارزش آن را از child.Text تنظیم کنید. Text: \u003d 'UK'؛ // اضافه کردن عنصر <COMPANY> کودک: \u003d xmldoc.createnode (1، 'شرکت'، '' ')؛ // اضافه کردن یک عنصر newnode.appendchild (کودک)؛ // و مقدار آن را تعیین کنید. Text: \u003d 'emi Records Ltd.؛ // اضافه کردن عنصر <PRICE>کودک: \u003d xmldoc.createnode (1، 'قیمت'، '')؛ // اضافه کردن یک عنصر newnode.appendchild (کودک)؛ // و ارزش آن را از Child.Text ایجاد کنید: \u003d '11 .99 "؛ // اضافه کردن یک عنصر <YEAR> کودک: \u003d xmldoc.createnode (1، 'سال'، '')؛ // اضافه کردن یک عنصر newnode.appendchild (کودک)؛ // و ارزش آن را از کودک تعیین کنید. Text: \u003d '1994'؛ // و شاخه root.appendchild را اضافه کنید (newnode)؛ ...</p><p>کد بالا دنباله ای از اقدامات زیر را برای اضافه کردن شاخه جدید نشان می دهد:</p> <ul><li>ایجاد یک شاخه جدید با استفاده از Createnode: <ul><li>ایجاد یک آیتم با استفاده از روش Createnode؛</li> <li>اضافه کردن یک عنصر به شاخه توسط روش Appendchild؛</li> <li>تنظیم ارزش عنصر از طریق اموال متن؛</li> <li>... برای همه موارد تکرار کنید.</li> </ul></li> <li>اضافه کردن یک شاخه جدید به سند توسط Appendchild.</li> </ul><p>به یاد بیاورید که روش Appendchild شاخه ای را در انتهای یک درخت اضافه می کند. برای اضافه کردن یک شاخه به یک مکان خاص از درخت، شما باید از روش insertbefore استفاده کنید.</p> <h2> مجموعه ای از شاخه ها - XMLDomNodelist شی</h2> <p>شیء XMLNodelist شامل لیستی از شاخه هایی است که می تواند با استفاده از روش های انتخابی یا GetElementsbyTagname ساخته شود و همچنین از ویژگی Childnodes به دست آمده است.</p> <p>ما قبلا استفاده از این شی را در مثال داده شده در بخش "حرکت در درخت سند" در نظر گرفته ایم. در اینجا ما همچنین برخی نظرات نظری را ارائه می دهیم.</p> <p>تعداد شاخه ها در لیست را می توان به عنوان ارزش اموال طول به دست آورد. شاخه ها دارای شاخص های 0 تا طول 1 هستند و هر شاخه فردی از طریق یک عنصر آرایه آیتم با شاخص مربوطه در دسترس است.</p> <p>حرکت بر روی لیست شاخه ها نیز می تواند با استفاده از روش NextNode که شاخه بعدی را در لیست باز می گرداند، یا NIL انجام شود، اگر شاخه فعلی دومی باشد. برای بازگشت به بالای لیست، باید روش تنظیم مجدد تماس بگیرید.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> ایجاد و ذخیره اسناد</h2> <p>بنابراین، ما به نحوه اضافه کردن شاخه ها و عناصر به اسناد موجود XML نگاه کردیم. حالا یک سند XML "در پرواز" ایجاد کنید. اول از همه، ما به شما یادآوری می کنیم که سند را می توان نه تنها از URL، بلکه از رشته معمولی بارگذاری کرد. در زیر نشان داده شده است که چگونه یک عنصر ریشه ایجاد کنید، که پس از آن می تواند به صورت پویا از عناصر باقی مانده استفاده شود (که ما قبلا در بخش "دستکاری شرکت های تابعه" در نظر گرفته ایم):</p><p>var xmldoc: ixmldomocument؛ ریشه: ixmldomnode؛ گره: ixmldomnode؛ S: ابریشمی؛ ... s: \u003d ' <CATALOG></CATALOG>'؛ xmldoc: \u003d codomdocument.create؛ xmldoc.async: \u003d اشتباه؛ xmldoc.loadxml (s)؛ ریشه: \u003d xmldoc.documentelement؛ گره: \u003d xmldoc.createnode (1، 'سی دی'، '')؛ root.appendchild (گره)؛ memo1.lines.add (xmldoc.xml)؛ ... xmldoc: \u003d nil؛</p><p>پس از ساخت یک سند XML، آن را در فایل با استفاده از روش ذخیره ذخیره کنید. مثلا:</p> <p>xmldoc.save ('c: \\ data \\ newcd.xml')؛</p> <p>علاوه بر صرفه جویی در فایل، روش ذخیره به شما اجازه می دهد تا یک سند XML را در یک شی XMLDOMDocument جدید ذخیره کنید. در این مورد، سند پردازش کامل است و به عنوان یک نتیجه، بررسی ساختار و نحو آن. در زیر نشان داده شده است که چگونه یک سند را در یک شی دیگر ذخیره کنید:</p><p>روش tform1.button2click (فرستنده: togject)؛ var xmldoc2: ixmldomocument؛ شروع xmldoc2: \u003d codomdocument.create؛ xmldoc.save (xmldoc2)؛ memo2.lines.add (xmldoc2.xml)؛ ... xmldoc2: \u003d nil؛ پایان؛</p><p>در نتیجه، ما یادآوری می کنیم که روش ذخیره نیز به شما اجازه می دهد تا یک سند XML را به سایر اشیاء COM که از Istream، IsetStream یا Ipesciststreaminit پشتیبانی می کنند، ذخیره کنید.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> با استفاده از قالب های XSL</h2> <p>بحث در مورد روش انتخاب شیء XMLDOMNode، ما اشاره کردیم که یک روش انعطاف پذیر تر برای دسترسی به شاخه های سند فراهم می کند. انعطاف پذیری در این واقعیت است که به عنوان یک معیار برای انتخاب شاخه ها، شما می توانید یک قالب XSL را مشخص کنید. چنین قالب هایی یک مکانیزم قدرتمند برای جستجوی اطلاعات در اسناد XML ارائه می دهند. به عنوان مثال، به منظور دریافت لیستی از تمام نام های موسیقی CD-ROM در دایرکتوری ما، شما می توانید پرس و جو زیر را دنبال کنید:</p><p>برای پیدا کردن اینکه آیا دیسک هایی از آن هنرمندان در ایالات متحده آزاد می شوند، درخواست به صورت زیر تشکیل شده است:</p><p>گره ها: \u003d root.selectnodes ('CD / Artist')؛</p><p>در زیر نشان داده شده است که چگونه اولین دیسک را در دایرکتوری پیدا کنید:</p><p>گره ها: \u003d root.selectnodes ('cd / title')؛</p><p>و بالاخره:</p><p>گره ها: \u003d root.selectnodes ('cd / title')؛</p><p>برای پیدا کردن دیسک های باب دیلان، می توانید پرس و جو زیر را انجام دهید:</p><p>گره ها: \u003d root.selectnodes ('CD [$ arst \u003d "bob dylan"] / عنوان')؛</p><p>و برای دریافت لیستی از دیسک های منتشر شده پس از سال 1985، ما پرس و جو زیر را انجام می دهیم:</p><p>گره ها: \u003d root.selectnodes ('cd / title')؛</p><p>بحث دقیق تر از Syntax XSL نیاز به انتشار جداگانه دارد. به خوانندگان فریبنده و تحقیق بیشتر تحقیقات، من تنها یک نمونه کوچک از استفاده احتمالی XSL را ارائه خواهم داد. فرض کنید ما باید دایرکتوری ما را به جدول HTML معمولی تبدیل کنیم. با استفاده از روش های سنتی، ما باید تمام شاخه های درخت را مرتب کنیم و برای هر مورد به دست آمده برای تشکیل برچسب های مربوطه <TD>…</TD>.</p> <p>با استفاده از XSL، ما به سادگی یک قالب (یا جدول سبک) ایجاد می کنیم، که در آن ما نشان می دهیم چه چیزی و نحوه تبدیل آن را نشان می دهیم. سپس ما این الگو را به کاتالوگ ما تحمیل می کنیم و آماده می شویم: قبل از ما متن از قالب XSL، که دایرکتوری را در جدول (فهرست 2) تبدیل می کند.</p> <p>کد برای پوشش دادن قالب XSL به کاتالوگ ما به نظر می رسد این است:</p><p>روش tform1.button2click (فرستنده: togject)؛ var xsldoc: ixmldomocument؛ شروع xsldoc: \u003d codomdocument.create؛ xsldoc.load ('c: \\ data \\ data.xsl')؛ memo2.text: \u003d xmldoc.transformnode (xsldoc)؛ xsldoc: \u003d nil؛ پایان؛</p><p>با تکمیل بحث ما از XSL، باید گفت که در حال حاضر این زبان به طور فعال برای تبدیل بین اسناد XML مختلف، و همچنین برای قالب بندی اسناد استفاده می شود.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> نتیجه</h2> <p>به دلایل کاملا قابل فهم، در یک مقاله غیر ممکن است که تمام اشیاء XML مایکروسافت XML را در نظر بگیریم و نمونه هایی از استفاده آنها را بیان کنیم. در اینجا ما تنها در مورد مسائل اصلی استفاده از XML DOM در برنامه ها لمس کردیم. در برگه 3 تمام اشیاء اجرا شده در مایکروسافت XML DOM را نشان می دهد.</p> <p>ComputerPress 12 "2000</p> <p>سفارش دادن وظایف حل شده در دلفی <br> دلفی دومین زبان برنامه نویسی است که دانش آموزان اغلب در فرآیند یادگیری آشنا می شوند. این آغاز یادگیری برنامه نویسی شی گرا است. من، به عنوان یک دانش آموز، به این نتیجه رسیدم که هیچ روش ساده تر برای کارشناسی ارشد زبان وجود ندارد تا یک ماشین حساب را روی آن بنویسید. حتی اگر عملکرد ابتدایی علاوه بر دو عدد را درک کنید، این در حال حاضر در نور زیادی است.</p> <p>CodeGaear، Delphi 7، لازاروس کامپایلر های مختلفی است، برنامه هایی که به کد ماشین نوشته شده توسط شما منتقل می شوند، آن را به Zoliki تبدیل می کنند. این همه برنامه ها برای ایجاد برنامه ها و نه زبان های برنامه نویسی جدا نیست. این کامپایلرها از زبان برنامه نویسی پاسکال استفاده می کنند که زبان دلفی را شامل می شود، که شبیه نحوی شبیه به پاسکال معمولی است، اما به طور قابل توجهی متفاوت عمل می کند. <br></p> <h2>نحو زبان برنامه نویسی چیست؟</h2> <p>این یک فرمت برای نوشتن اپراتورهای مختلف است. به عنوان مثال، چرخه "برای" در پاسکال دارای فرمت زیر است: "برای n: \u003d 1 به k انجام، و غیره</p><p>در زبان برنامه نویسی C ++، همان چرخه تا حدودی متفاوت نوشته شده است: برای (n \u003d 1؛ n ما یک ماشین حساب بنویسیم</p><p>این به شما می دهد تا بدانید که چگونه اشیاء با کد برنامه تعامل دارند، چه متغیرها چیست، چگونه توابع ریاضی کار می کنند. تمام برنامه نویسی در هر صورت محاسبه خواهد شد. این بازی همچنین یک برنامه است که به طور مداوم چیزی را در نظر می گیرد، با اعداد و توابع عددی کار می کند. برنامه نویسی از ریاضیات جدا نیست.</p> <p>ما برای نوشتن محیط توسعه لازاروس استفاده می کنیم. عملکرد آن به عنوان غنی نیست، به عنوان مثال، Codegear، اما دسترسی آزاد است و برای مطالعه طراحی شده است.</p><p>باز کردن محیط توسعه، شکل و پانل عناصر را می بینیم. در اینجا یک فرم است</p> <p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-24.jpg' width="100%" loading=lazy loading=lazy></p><p>در اینجا پانل عنصر است.</p><p>اولین کاری که ما انجام خواهیم داد این است که سه مورد را که نیاز به اجرای تابع اضافه شده از دو عدد اضافه کنید اضافه کنید. ما نیاز داریم: "تدیت" در تعداد سه قطعه و "Tbutton". در تصویر زیر، آنها در پانل فلش نشان داده شده است. بر روی آنها یک بار کلیک کنید، و سپس یک بار در شکل، و آنها بر روی آن ظاهر می شود.</p><p>این زمینه های متنی برای ورودی و یک دکمه منظم است. شما این عناصر را با استفاده از تقریبا هر برنامه ویندوز مواجه می کنید. نگاهی بیاندازید.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-27.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>اکنون این کتیبه ها را تمیز کنید. روی برگه مشاهده کلیک کنید. و بر روی "بازرس اشیاء" کلیک کنید. این پنجره ظاهر خواهد شد.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-28.jpg' width="100%" loading=lazy loading=lazy></p><p>یکبار روی عنصر ما "دکمه" را روی فرم کلیک کنید و مقدار "عنوان" را در پنجره بازرس به هر چیز دیگری تغییر دهید. به عنوان مثال، در کلمه "OK". روی Enter کلیک کنید ما در فرم می بینیم، زیرا عنصر نام را تغییر داده است.</p><p>فقط آن را با ویرایش انجام دهید، فقط تغییر نام ندهید، اما ما آنها را بدون هیچ گونه محتوایی انجام خواهیم داد. ما آنها را به نوبه خود برجسته می کنیم و مقدار متن را در بازرس تمیز می کنیم. فراموش نکنید که ENTER را فشار دهید.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-29.jpg' width="100%" loading=lazy loading=lazy></p><p>با توجه به نتیجه، فرم ما به نظر می رسد این.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-30.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>حالا که ماشین حساب ما به دست آورد، شما باید کد نرم افزاری لازم را برای روش دکمه ما ثبت کنید. روی دکمه دکمه دوبار کلیک کنید و ویرایشگر منبع را باز کنید.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-31.jpg' width="100%" loading=lazy loading=lazy></p><p>دیدن؟ دکمه 1CLICK این یک روش است که مسئول آنچه اتفاق می افتد زمانی که ما بر روی دکمه یک بار کلیک می کنیم. و موارد زیر باید رخ دهد: برنامه در ویرایش سوم مورد نیاز است تا مبلغ اعداد را که در دو فیلد اول معرفی شده است، به ما بدهد. ما کد را بنویسیم</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-32.jpg' width="100%" loading=lazy loading=lazy></p><p>چنین 5 خط ساده از کد ما نیاز به نوشتن. نظرات و توضیحات در تصویر بالا قابل مشاهده است. پس از آن، روی این دکمه کلیک کنید.</p> <p>مجموعه ای از پروژه ما کامپایل خواهد شد. این در برنامه مونتاژ خواهد شد. ما اعداد را در دو فیلد اول وارد می کنیم، روی دکمه کلیک کنید و مقدار مقدار را دریافت کنید.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-34-2.jpg' width="100%" loading=lazy loading=lazy></p> <h2>نتیجه</h2> <p>شما می توانید بر روی دکمه "فایل" کلیک کنید، سپس "ذخیره کردن همه چیز"، پوشه را انتخاب کنید و یک برنامه کامل را انتخاب کنید، شروع آن را می توانید از دسکتاپ انجام دهید. در حال حاضر سعی کنید آن را به خودتان بفهمید که باید در این کد بازنویسی کنید تا برنامه باید توسط دو عدد تقسیم شود و نه بسته بندی نشده است. نکته: شما باید نوع داده را تغییر دهید. ویدئو زیر یک مثال مشابه را نشان می دهد، اما در دلفی 7، نه لازاروس.</p><p><span class="6qR5tjJKK3g"></span></p> <p>بسیاری از برنامه نویسان دلفی، صرفه جویی در تنظیمات مرتبط هستند <i>ini</i> فایل ها در برنامه های خود. استفاده از این روش، در پروژه های کمتر جدی، لازم است از آن جلوگیری شود، زیرا انعطاف پذیری آن را محدود می کند، که مانع گسترش بیشتر برنامه می شود. لازم به ذکر است که به دلیل سهولت استفاده و حضور وجوه داخلی در محیط توسعه، چنین رویکردی بسیار محبوب است. <br><br> با این حال، گزینه ایده آل برای ذخیره سازی تنظیمات برنامه ساختار یافته است <i>XML</i> فایل ها. مزیت آنها این است که تعداد پارامترها ممکن است ثابت نشوند. برای درک بهتر این، یک مثال خاص را در نظر بگیرید.</p><p>در برنامه تحقیق، هنگامی که روی ضبط کلیک میکنید، منوی زمینه به نظر می رسد، که لیست نقاط را نمایش می دهد. این موارد دستورات است که به نوبه خود از فایل تنظیمات دانلود می شود. در صورتی که تنظیمات در آن ذخیره شود <i>ini</i> فایل، این برنامه می تواند یک تعداد معینی از دستورات را ذخیره و بارگذاری کند، به عنوان مثال 10 یا 50. به محض اینکه شما نیاز به اهمیت بیشتری دارید، باید کد را بازنویسی کنید و به همین ترتیب آن را مجددا کامپایل کنید.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.ini_.jpg' height="145" width="247" loading=lazy loading=lazy><br> استفاده از رویکرد با استفاده از <i>XML</i> فایل ها، ما توانایی دانلود تمام پارامترهای بخش به صورت پویا را داریم. برای این همه، فایل پیکربندی ظریف تر می شود، بدون تعداد بیش از حد پارامترها. با این حال، ابزار استاندارد برای کار با <i>XML</i> دلفی دارای اشکالاتی است، بنابراین من توصیه می کنم با استفاده از کتابخانه استاندارد <b>msxml</b>. معمولا بخشی پیش فرض سیستم های خانوادگی ویندوز است.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.xml_.jpg' align="center" width="100%" loading=lazy loading=lazy><br> برای اتصال <b>msxml</b>ما باید یک فایل رابط را با لیستی از تمام توابع با وارد کردن آن از سرور COM تشکیل دهیم. نحوه وارد کردن رابط، مقاله های دقیق به اندازه کافی نوشته نشده است، من پیشنهاد می کنم فایل را دانلود کنید <b>msxml2_tlb.pas.</b> در حال حاضر آماده استفاده است. پس از دانلود فایل، آن را در کنار پروژه خود قرار دهید یا به پوشه Delphi Lib Lib بروید. بنابراین، تمام برنامه های ایجاد شده قادر به استفاده از ماژول خواهند بود. <b>msxml</b>، به اندازه کافی برای اضافه کردن msxml2_tlb به استفاده می شود.</p><p>برای وضوح، مثال زیر از کاربرد این کتابخانه را در نظر بگیرید:</p><p>روش loaddata؛ var xmldoc: domdocument؛ ریشه: ixmldomelement؛ شروع xmldoc: \u003d codomdocument.create؛ xmldoc.load ("settins.xml")؛ ریشه: \u003d xmldoc.documentelement؛ ShowMessage ("اندازه / عرض"). متن)؛ ریشه: \u003d صفر؛ xmldoc: \u003d nil؛ پایان؛</p><p>اول، یک نمونه از کلاس DomDocument ایجاد شده است، پس از آن محتویات فایل settings.xml به حافظه بارگذاری می شود. به عنوان طبق استاندارد هر <i>XML</i> فایل باید حاوی برچسب ریشه باشد (در این مورد <i>پیکربندی</i>)، ما باید آن را با استفاده از تابع دریافت کنیم <i>مستند سازی</i>. سپس محتویات محتوای بین برچسب ها <width></width> که به نوبه خود بین برچسب ها است <size></size> . بنابراین، از فایل settings.xml، روش ما متن را در پیامبازی قرار می دهد <i>"100px"</i>.</p><p> <?xml version="1.0" encoding="utf-8"?> <config> <size> <height>500px</height> <width>100px</width> </size> </config> </p><p>در اینجا روش SelectSingLende اعمال می شود، که رشته را به عنوان یک پارامتر می گیرد.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> </article> <div class="post-bottom"> <div class="post-share"> <script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script> <script src="//yastatic.net/share2/share.js"></script> <div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir" data-counter=""></div> </div> </div> <div class='yarpp-related'> <div class="related-items"> <div class="headline">پاسخ به سوال شما پیدا نشد؟ به اینجا نگاه کن</div> <div class="items"> <div class="related-item"> <a class="related-item__title" href="https://totrdlo.ru/fa/registraciya-lichnoi-stranicy-v-socialnoi-seti-facebook-kak-obedinit-dve-uchetnye.html"><img src="/uploads/3283d29449f6fcf31e7b8c7f3a8f6779.jpg" width="120" height="120" alt="چگونه می توان دو حساب را در فیس بوک ترکیب کرد؟" class="related-item__image" / loading=lazy loading=lazy>چگونه می توان دو حساب را در فیس بوک ترکیب کرد؟</a> <div class="related-item__comments"><span></span></div> </div> <div class="related-item"> <a class="related-item__title" href="https://totrdlo.ru/fa/kak-v-vorde-delat-ramki-krasivye-skachivaem-i-vstavlyaem-krasivye-ramki-v.html"><img src="/uploads/fd38b064f444ed23c0ccb9be68fc25ad.jpg" width="120" height="120" alt="دانلود و چارچوب زیبا را به ورد سند دانلود کنید" class="related-item__image" / loading=lazy loading=lazy>دانلود و چارچوب زیبا را به ورد سند دانلود کنید</a> <div class="related-item__comments"><span></span></div> </div> <div class="related-item"> <a class="related-item__title" href="https://totrdlo.ru/fa/clock-watchdog-timeout-windows-10-chto-delat-kak-ispravit-oshibki-clock-watchdog-timeout-tipa-sinii.html"><img src="/uploads/418be8351eeee7a32bc2c905fc8ed975.jpg" width="120" height="120" alt="نحوه رفع خطاهای Clock_watchdog_TimeoT"синий экран" (0x00000101)" class="related-item__image" / loading=lazy loading=lazy>نحوه تعمیر Clock_watchdog_Timeout نوع "آبی صفحه" (0x00000101)</a> <div class="related-item__comments"><span></span></div> </div> </div> </div> </div> <div style="text-align: center; margin-top: 15px; margin-bottom: 15px; " id="vanna-1965575812"><div class="adsense"><script type="text/javascript">ga_1();</script></div></div> </main> <aside class="sidebar"> <div class="advices" data-theme="vannapedia_v.3"> <div class="headline"></div> <div class="advices-content"> <img src="/uploads/e819878f778f58eec8fa5da1561c1952.jpg" width="120" height="120" alt="اینتل Core i5 4590 بررسی پردازنده" class="advices__image" / loading=lazy loading=lazy> <div class="advices__title" data-id="3334"><a href="https://totrdlo.ru/fa/processor-intel-core-i5-4590-otzyvy-obem-kesh-pamyati-l3-mb.html">اینتل Core i5 4590 بررسی پردازنده</a></div> </div> </div> <div class="vk-widget" id="text-3"> <div class="textwidget"><script type="text/javascript" src="//vk.com/js/api/openapi.js?130"></script> <div id="vk_groups"></div> </div> </div> <div class="sidebar-questions"> <div class="headline">جدید</div> <ul> <li><a href="https://totrdlo.ru/fa/chto-delat-esli-chernyi-ekran-chernyi-ekran-pri-vklyuchenii.html" >صفحه نمایش سیاه هنگامی که کامپیوتر را روشن می کنید</a></li> <li><a href="https://totrdlo.ru/fa/kak-zablokirovat-programme-dostup-v-internet-kak-zablokirovat.html" >چگونه برنامه های دسترسی به اینترنت را به درستی مسدود کنیم؟</a></li> <li><a href="https://totrdlo.ru/fa/cherneet-ekran-chernyi-ekran-pri-vklyuchenii-kompyutera-chto.html" >صفحه نمایش سیاه هنگامی که کامپیوتر را روشن می کنید؟</a></li> <li><a href="https://totrdlo.ru/fa/nastroika-mach3-pod-vash-stanok-bazovaya-nastroika-mach3-pereklyuchit-yazyk-na-match.html" >پایه راه اندازی Mach3 سوئیچ زبان در مسابقه 3</a></li> <li><a href="https://totrdlo.ru/fa/pochemu-net-zvuka-v-dinamikah-kompyutera-pochemu-ne-rabotaet-zvuk-na.html" >چرا صدا بر روی کامپیوتر کار نمی کند چگونه مشکل را حل کند</a></li> <li><a href="https://totrdlo.ru/fa/kak-nachertit-diagrammu-v-vorde-stroim-grafiki-i-diagrammy-v-ms-word-diagramma.html" >گرافیک و نمودار را در MS Word بسازید</a></li> </ul> </div> <div class="section"> </div> <div class="section"> <div class="headline">مقالات محبوب</div> <ul class="sidebar-posts"> <li><a href="https://totrdlo.ru/fa/anime-fony-dlya-yandeks-brauzera-zhivye-upravlenie-temami-v-yandeks.html"><img src="/uploads/a7fbccd6efc443dd82be7ccfadade707.jpg" width="80" height="80" alt="مدیریت تم در Yandex" / loading=lazy loading=lazy>مدیریت تم در Yandex</a></li> <li><a href="https://totrdlo.ru/fa/post-i-get-zaprosy-prostymi-slovami-kak-otpravit-post-zapros-iz-brauzera-metod.html"><img src="/uploads/b37483beedf1144b2ca10b1603f4d78c.jpg" width="80" height="80" alt="نحوه ارسال پست به درخواست مرورگر: روش پست متغیر پست در PHP استفاده کنید" / loading=lazy loading=lazy>نحوه ارسال پست به درخواست مرورگر: روش پست متغیر پست در PHP استفاده کنید</a></li> <li><a href="https://totrdlo.ru/fa/kakie-sistemnye-trebovaniya-igry-cs-go-optimalnyi-komp-dlya.html"><img src="/uploads/ba7b6a9d8273cc696c1be7825f6e3e6c.jpg" width="80" height="80" alt="رایانه بهینه برای پلیس کدام کامپیوتر برای CS Go" / loading=lazy loading=lazy>رایانه بهینه برای پلیس کدام کامپیوتر برای CS Go</a></li> </ul> </div> <div class="section"> <div class="headline">جدید در سایت</div> <ul class="sidebar-posts sidebar-photo"> <li><a href="https://totrdlo.ru/fa/optimalnyi-komp-dlya-ks-go-kompyuter-dlya-cs-go-sistema-na-kotoroi-ks-go-ne.html">رایانه بهینه برای پلیس</a></li> <li><a href="https://totrdlo.ru/fa/ispolzovanie-xml-v-srede-delphi-ispolzovanie-xml-document-object-model-sozdanie-xml-v.html">با استفاده از مدل XML سند سند ایجاد XML در دلفی XE فلپ</a></li> <li><a href="https://totrdlo.ru/fa/kak-ubrat-oshibku-scenariya-v-windows-kak-ispravlyat-svoi-oshibki.html">نحوه اصلاح اشتباهات شما نحوه رفع تمام خطاهای لپ تاپ</a></li> <li><a href="https://totrdlo.ru/fa/migaet-bukva-s-na-printere-ustranyaem-oshibki-esli-printer.html">حذف خطاها اگر چاپگر نمی خواهد چاپ شود</a></li> <li><a href="https://totrdlo.ru/fa/kak-ubrat-oshibku-scenariya-v-windows-ispravlyaem-oshibki-v-rabote-windows-kak.html">پنجره های صحیح در ویندوز چگونه از خطاهای کامپیوتری خلاص شوند</a></li> </ul> </div> </aside> </div> <footer class="footer"> <nav class="footer__nav"><ul><li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-1219"><a href="https://totrdlo.ru/fa/">جدید</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/ustranenie-nepoladok-zablokirovannyh-ustanovok-i-udalenii-net.html">عیب یابی نصب و راه اندازی قفل شده و حذف</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/modul-chisla-v-eksele-summirovanie-po-modulyu-v-excel-alternativnye.html">خلاصه ماژول در اکسل</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/administrator-windows-zaproshennaya-operaciya-trebuet-povysheniya-administrator.html">عملیات درخواست شده نیاز به افزایش دارد</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/zakrepit-stroku-v-word-zakreplyaem-zakreplenie-paneli-instrumentov-v-word-vklyuchenie.html">بستن نوار ابزار به صورت کلمه</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-1230"><a href="https://totrdlo.ru/fa/">محبوب</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/zakrepit-tablicu-v-word-zakreplenie-paneli-instrumentov-v-word-vklyuchenie-otdelnyh.html">بستن نوار ابزار به صورت کلمه</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/ne-udalyaetsya-stranica-v-word-kak-v-programme-word-udalyat-stranicy.html">همانطور که در برنامه Word برای حذف صفحات</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/pochemu-poyavlyaetsya-sinii-ekran-na-windows-7-sinii-ekran-smerti-bsod-boremsya.html">صفحه نمایش آبی آبی (BSOD) - ما با اشتباهات مبارزه می کنیم</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/smenit-imya-vkontakte-bez-proverki-kak-pomenyat-imya-i-familiyu-v.html">نحوه تغییر نام و نام خانوادگی به VK</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/vklyuchaetsya-noutbuk-acer-aspire-v3-571g-ne-vklyuchaetsya-noutbuk-acer-sbros.html">شامل لپ تاپ Acer نیست</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/rabochaya-klaviatura-ne-rabotaet-ustanovka-draivera-s-diska-otkazyvaetsya.html">نصب درایور از دیسک</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/moshchnye-igrovye-pk-moshchnye-igrovye-pk-kak-sobrat-igrovoi-komp-za-100000.html">رایانه های بازی قدرتمند چگونه برای جمع آوری یک کامپیوتر بازی برای 100،000</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/devil-may-cry-vyletaet-ne-zapuskaetsya-dmc-tormozit-igra-vyletaet-glyuchit-reshenie-samyh-rasprostra.html">شیطان ممکن است سقوط کند. آیا DMC شروع نمی شود؟ بازی را مهار می کند؟ سقوط؟ حشره کش؟ حل و فصل شایع ترین مشکلات. پس از هر ماموریت در DMC: شیطان ممکن است مشکلات را با انتقال حساب برای لیست رهبران گریه کند</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-1236"><a href="https://totrdlo.ru/fa/">توصیه شده</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/dyablo-3-zavisaet-vo-vremya-igry-ne-zapuskaetsya-diablo-iii-tormozit-igra-vyletaet.html">دیابلو III شروع نمی شود؟</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/kak-proverit-kompyuter-na-sledyashchie-programmy-kak-proverit-kompyuter-na.html">نحوه بررسی رایانه به نرم افزار جاسوسی</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/kak-naiti-programmu-slezheniya-na-kompyutere-shpionskie.html">نرم افزار جاسوسی بر روی کامپیوتر</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/chto-delat-esli-mass-effect-3-vyletaet-pri-zapuske-mass-effect-ne-zapuskaetsya.html">اثر توده ای شروع نمی شود: حل مسئله</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/reshenie-samyh-rasprostranennyh-problem-ne-zapuskaetsya-the-saboteur.html">آیا Saboteur شروع می شود؟</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/pochemu-kompyuter-shch-lkaet-prichiny-po-kotorym-shchelkaet-zhestkii.html">دلایل آن هارد دیسک سخت و راه حل آنها هنگام کلیک کردن در واحد سیستم</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/deadfall-adventures-kak-sdelat-polnoekrannyi-rezhim-kak-aktivirovat-polnoekrannyi-rezhim-v-brauzere.html">چگونه می توان حالت تمام صفحه را در مرورگر فعال کرد؟</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/fa/mirror-s-edge-chernyi-ekran-zvuk-est-mirrors-edge-ne-zapuskaetsya-ne.html">لبه آینه شروع نمی شود، کار نمی کند، نصب نشده است</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-6898"><a href="https://totrdlo.ru/fa/">درباره سایت</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6900"><a href="">درباره سایت</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6901"><a href="">تبلیغات در وب سایت</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6902"><a href="">مخاطب</a></li> </ul> </li> </ul></nav> <div class="footer-bottom"> <div class="footer-left"> <div class="foot__logo"> <div class="footer__logo-sitename">totrdlo.ru. <span> ru</span></div> </div> <style> .foot__logo { min-height: 35px; margin: 0 0 11px -79px; padding: 9px 0 0 79px; text-decoration: none; } </style> <p>© 2021 همه حقوق محفوظ است</p> <p>راهنمای تلفن همراه شما. اپراتورها مشاوره مفید</p> <ul class="footer-bottom__nav"> <li><a href="" >تبلیغات در پروژه</a></li> </ul> </div> <div class="footer-buttons"> </div> <ul class="footer__soc"> <li><a href="http://vk.com/" target="_blank" class="vk">در تماس با</a></li> <li>odnoklassniki</li> <li><a href="http://www.facebook.com/" target="_blank" class="fb">فیس بوک.</a></li> <li><a href="https://twitter.com/" target="_blank" class="twi">توییتر.</a></li> </ul> <div class="footer-right"> <div class="footer__note"></div> <div class="footer__counters" id="text-2"> <div class="textwidget"></div> </div> </div> </div> </footer> </div> </div> <link rel='stylesheet' id='wp-lightbox-bank.css-css' href='/wp-content/plugins/wp-lightbox-bank/assets/css/wp-lightbox-bank.css?ver=4.8.3' type='text/css' media='all' /> <script type='text/javascript' src='https://totrdlo.ru/wp-content/themes/vannapedia_v.3/js/scripts.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=4.8.3'></script> <script type='text/javascript' src='/assets/scripts1.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript'> var q2w3_sidebar_options = new Array(); q2w3_sidebar_options[0] = { "sidebar" : "sidebar-fixed", "margin_top" : 10, "margin_bottom" : 0, "stop_id" : "respond", "screen_max_width" : 0, "screen_max_height" : 0, "width_inherit" : false, "refresh_interval" : 1500, "window_load_hook" : false, "disable_mo_api" : false, "widgets" : ['text-4'] } ; </script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.0.4'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.3'></script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/wp-lightbox-bank/assets/js/wp-lightbox-bank.js?ver=4.8.3'></script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/akismet/_inc/form.js?ver=4.0'></script> </body> </html>