Utilizarea xml în delphi (msxml_tlb)


Pentru mulți programatori Delphi, salvarea setărilor este asociată cu utilizarea fișierelor INI în programele lor. Aplicarea acestei metode, în cazul proiectelor mai puțin grave, ar trebui evitată, deoarece aceasta limitează flexibilitatea, ceea ce împiedică extinderea programului. Merită spus că această abordare este destul de populară, din cauza ușurinței utilizării și a disponibilității instrumentelor integrate în mediul de dezvoltare.

Cu toate acestea, opțiunea ideală pentru stocarea setărilor programului sunt fișiere XML structurate. Avantajul lor constă în faptul că numărul parametrilor nu poate fi stabilit. Pentru a înțelege mai bine acest lucru, ia în considerare un exemplu specific.

În programul USearch. când faceți clic pe o înregistrare, apare un meniu contextual. în care este afișată lista articolelor. Aceste elemente sunt comenzi care sunt, la rândul lor, încărcate din fișierul de setări. În cazul în care, în cazul în care setările au fost stocate în fișierul INI, programul ar putea salva și încărca un anumit număr de echipe, cum ar fi 10 sau 50. De îndată ce nevoia de o mai mare importanță va trebui să rescrie codul și recompilați-l în mod corespunzător.

Utilizarea xml în delphi (msxml_tlb)

Aplicând abordarea utilizând fișiere XML, vom putea încărca dinamic toți parametrii secțiunii. Pentru toate acestea, fișierul de configurare va deveni mai elegant, fără numerotarea excesivă a parametrilor. Cu toate acestea, instrumentele standard pentru lucrul cu XML în Delphi au multe deficiențe, așa că vă recomand să folosiți biblioteca standard MSXML. De obicei, acesta este implicit inclus în sistemele de operare ale familiei Windows.


Pentru a conecta MSXML. trebuie să creați un fișier de interfață cu o listă a tuturor funcțiilor, importându-l din serverul COM. Cum de a importa interfața este scrisă nu câteva articole detaliate, vă sugerez să descărcați fișierul MSXML2_TLB.PAS deja gata de utilizare. După ce fișierul este descărcat, plasați-l lângă proiectul dvs. sau plasați-l în directorul lib al mediului Delphi. Astfel, toate programele create pot folosi modulul MSXML. este suficient să adăugați linia MSXML2_TLB la utilizări.

Pentru claritate, luați în considerare următoarea aplicație a acestei biblioteci:

Mai întâi, este creată o instanță a clasei DOMDocument. apoi conținutul fișierului settings.xml este încărcat în memorie. Deoarece orice fișier XML trebuie să conțină o etichetă root (în acest caz config), trebuie să o folosim folosind funcția DocumentElement. Apoi, conținutul se transmite între etichete . care la rândul lor se află între etichete . Deci, din fișierul settings.xml. metoda noastră va tipări textul "100px" în MessageBox.

Aici este aplicată metoda SelectSingleNode. care ia XPath-ul de șir ca parametru. Vă recomandăm să studiați limba de interogare XPath, deoarece prin stăpânirea ei puteți crea lucruri cu adevărat uimitoare.

De multe ori călătoresc în jurul orașului cu un netbook și am nevoie de acces la Internet mobil. Cu toate acestea, utilizarea modemurilor 3G, în acest caz, nu este cea mai reușită opțiune, deoarece viteza de conectare nu este întotdeauna stabilă. Ramane doar sa speram pentru aparitia unui furnizor ieftin de wimax in orasul nostru. Această tehnologie poate acoperi întregul oraș și, în același timp, oferă viteză mare Internetului mobil.

Exemplul nereusit.
Pentru orice număr de elemente, puteți crea un fișier inițial al formularului:

[MenuItems]
ItemsCount = 100500 <— Количество пунктов меню
Item1Name = Ping
Item1Command = ping 10.0.0.1
Item2Name = Trace-time
Item2Command = tracert 10.0.0.1
...
Articol100500Name = arp-table
Articol100500Command = arp -a

Astfel, puteți implementa orice listă, inclusiv cele imbricate:

[Main]
subSectionCount = 5
...
[Main.1]
...
[Main.2]
...
...
[Main.5]
...
Formatul INI este mult mai simplu și mult mai rapid parsitsya. În timp ce pentru xml există o grămadă de parseri de la diferiți producători de diferite grade de viteză de procesare a documentelor și glitchiness.

Întotdeauna am avut INI în proiectele mele. Un xml incerc sa folosesc doar unde nu pot sa fac fara el.

Item2Name = Trace-time
Item2Command = tracert 10.0.0.1
...
Articol100500Name = arp-table
Articol100500Command = arp -a

Bine. De exemplu, aveți 1000 de parametri. Aveți nevoie de 47 și 48 pentru a adăuga o altă comandă (poziția contează). Cum să fii aici? Redenumiți 950 elemente?

Un exemplu cu 100500 de elemente și subsecțiuni numerotate este un exemplu, îmi pare rău, un rahat. Pentru un student de anul întâi studentul va scăpa, dar nu mai mult.

Judecând din punctul de vedere al fișierului IO (cel mai îngust locul de executare), atunci nu există nici o diferență - fișier aici și acolo după ce elementul este complet rescris 47th.

și nu este necesar să stocați separat numere de secvență în memorie (acestea sunt stocate ca număr de ordine al elementului matrice / listă). Acestea sunt doar pentru a nu încălca acordul format .ini.