sarjat ovat ok, taulukot ovat upeita.
Oletetaan, että haluamme luoda kolme yhden ulottuvuuden taulukkoa 50 jäsenelle ohjelmointiyhteisössämme. Ensimmäinen taulukko on tarkoitettu nimille, toinen sähköposteille ja kolmas yhteisöllemme lähetettyjen tiedostojen (komponentit tai sovellukset) lukumäärälle.
Jokaisella taulukolla (luettelolla) olisi vastaavat hakemistot ja runsaasti koodia kaikkien kolmen luettelon pitämiseksi samanaikaisesti. Tietenkin, voimme kokeilla yhdellä kolmiulotteisella ryhmällä, mutta entä sen tyyppi? Tarvitsemme merkkijonoa nimille ja sähköposteille, mutta kokonaisluvun latausmäärälle.
Tapa työskennellä tällaisen tietorakenteen kanssa on käyttää Delphiä levyrakenne.
TMember = Levy...
Esimerkiksi seuraava ilmoitus luo tietuetyypin nimeltä TMember, jota voisimme käyttää tapauksessamme.
Pohjimmiltaan, a tietuerakenne voi sekoittaa mitä tahansa Delphin sisäänrakennettua tyyppiä mukaan lukien kaikki luomasi tyypit. Tietuetyypit määrittelevät kiinteät kokoelmat erityyppisiä kohteita. Jokainen esine tai ala, on kuin muuttuja, joka koostuu nimestä ja tyypistä.
TMember-tyyppi sisältää kolme kenttää: merkkijonoarvo nimeltä Nimi (jäsenen nimen pitämiseksi), merkkijonotyypin arvo nimeltään sähköposti (yhdelle sähköpostille) ja kokonaisluku (kardinaali) nimeltään Viestit (pitääksesi lähetysten lukumäärän Yhteisö).
Kun olemme asettaneet tietuetyypin, voimme julistaa muuttujan tyypiksi TMember. TMember on nyt yhtä hyvä muuttujatyyppi muuttujille kuin mikään muu Delfoi's sisäänrakennetut tyypit, kuten merkkijono tai kokonaisluku. Huomaa: TMember-tyyppivakuutus ei varaa muistia Nimi-, Sähköposti- ja Viestit-kenttiin;
Jotta TMember-tietueen tosiasiallinen luominen on julistettava TMember-tyyppinen muuttuja, kuten seuraavassa koodissa:
Nyt kun meillä on ennätys, käytämme pistettä DelphiGuiden kenttien eristämiseen.
Huomaa: Yllä oleva koodi voidaan kirjoittaa uudelleen käyttämällä kanssaavainsana.
Voimme nyt kopioida DelphiGuide-kenttien arvot AMemberille.
Tietueen laajuus ja näkyvyys
Lomakkeen (toteutuksen osa), toiminnon tai menettelyn ilmoituksessa ilmoitetun tietuetyypin laajuus rajoittuu siihen lohkoon, jossa se on ilmoitettu. Jos tietue ilmoitetaan yksikön rajapintaosassa, sillä on laajuus, joka sisältää kaikki muut yksiköt tai ohjelmat, jotka käyttävät yksikköä, jossa ilmoitus tapahtuu.
Arkisto levyjä
Koska TMember toimii kuten mikä tahansa muu Object Pascal -tyyppi, voimme julistaa tietuemuuttujien ryhmän:
Huomaa: Näin voit tehdä julistaa ja alustaa vakio joukko tietueita Delphissä.
Tallentaa levykenttinä
Koska tietuetyyppi on laillinen kuin mikä tahansa muu Delphi-tyyppi, tietueen kenttä voi olla tietue itse. Voimme esimerkiksi luoda ExpandedMemberin seuraamaan sitä, mitä jäsen lähettää jäsenten tietojen kanssa.
Yhden tietueen kaikkien tarvittavien tietojen täyttäminen on nyt jotenkin vaikeampaa. TExpandedMember-kenttiin pääsyyn tarvitaan enemmän jaksoja (pisteitä).
Nauhoita "Tuntematon" -kentällä
Tietuetyypillä voi olla varianttiosa (ei pidä sekoittaa Variantityyppisen muuttujan kanssa). Varianttitietueita käytetään esimerkiksi silloin, kun haluamme luoda tietuetyypin, jolla on kentät erilaisia tietoja, mutta tiedämme, että meidän ei koskaan tarvitse käyttää kaikkia kenttiä yhdessä tietueessa ilmentymä. Tutustu lisätietoihin Variant-osista Recordsissa tutustumalla Delphin ohjeisiin. Varianttitietueiden käyttö ei ole tyyppiturvallista eikä ole suositeltava ohjelmointikäytäntö, etenkään aloittelijoille.
Vaihtoehtoiset tietueet voivat kuitenkin olla varsin hyödyllisiä, jos joudut tilanteeseen käyttää niitä.