Porozumění a používání typů dat záznamu v Delphi

Sady jsou v pořádku, pole jsou skvělí.

Předpokládejme, že chceme v naší programovací komunitě vytvořit tři jednorozměrná pole pro 50 členů. První pole je pro jména, druhé pro e-maily a třetí pro počet uploadů (komponent nebo aplikací) do naší komunity.

Každé pole (seznam) by mělo odpovídající indexy a dostatek kódu, aby byly všechny tři seznamy udržovány paralelně. Samozřejmě bychom mohli zkusit s jedním trojrozměrným polem, ale co jeho typ? Potřebujeme řetězec pro jména a e-maily, ale celé číslo pro počet uploadů.

Způsob práce s takovou datovou strukturou je použít Delphi struktura záznamu.

TMember = Záznam...

Například následující deklarace vytvoří typ záznamu nazvaný TMember, který bychom mohli použít v našem případě.

V podstatě, a struktura dat záznamu může kombinovat kterýkoli ze zabudovaných typů Delphi včetně všech typů, které jste vytvořili. Typy záznamů definují pevné kolekce položek různých typů. Každá položka nebo pole, je jako proměnná, která se skládá ze jména a typu.

Typ TMember obsahuje tři pole: hodnotu řetězce nazvanou Jméno (pro držení jména člena), hodnotu typu řetězce nazývá e-mail (pro jeden e-mail) a celé číslo (kardinál) s názvem Příspěvky (pro udržení počtu příspěvků na naše společenství).

instagram viewer

Jakmile nastavíme typ záznamu, můžeme deklarovat proměnnou typu TMember. TMember je nyní stejně dobrým typem proměnné jako kterýkoli z nich Delphi 'vestavěné typy jako String nebo Integer. Poznámka: Prohlášení typu TMember nepřiděluje žádnou paměť pro pole Name, eMail a Posts;

Abychom skutečně vytvořili instanci záznamu TMember, musíme deklarovat proměnnou typu TMember, jako v následujícím kódu:

Nyní, když máme záznam, použijeme tečku k izolaci polí DelphiGuide.

Poznámka: výše uvedený kód lze přepsat pomocí sklíčové slovo.

Nyní můžeme zkopírovat hodnoty polí DelphiGuide do AMember.

Zaznamenejte rozsah a viditelnost

Typ záznamu deklarovaný v deklaraci formuláře (implementační sekce), funkce nebo procedury má rozsah omezený na blok, ve kterém je deklarován. Pokud je záznam deklarován v části rozhraní jednotky, má rozsah, který zahrnuje všechny další jednotky nebo programy, které používají jednotku, kde se prohlášení vyskytuje.

Pole záznamů

Protože TMember funguje jako jakýkoli jiný typ Object Pascal, můžeme deklarovat řadu proměnných záznamu:

Poznámka: Zde je návod deklarovat a inicializovat konstantní pole záznamů v Delphi.

Záznamy jako záznamová pole

Protože je typ záznamu legitimní jako jakýkoli jiný typ Delphi, můžeme mít pole záznamu samotný záznam. Například bychom mohli vytvořit ExpandedMember pro sledování toho, co člen odesílá spolu s informacemi o členech.

Vyplnění všech informací potřebných pro jeden záznam je nyní nějak obtížnější. Pro přístup do polí TExpandedMember je zapotřebí více období (teček).

Záznam pomocí polí „Neznámý“

Typ záznamu může mít variantu (nesmí být zaměňován s proměnnou typu Variant). Záznamy variant se používají například tehdy, když chceme vytvořit typ záznamu, který má pole různé druhy dat, ale víme, že nikdy nebudeme muset používat všechna pole v jednom záznamu instance. Chcete-li se dozvědět více o různých variantách v záznamech, podívejte se na soubory nápovědy společnosti Delphi. Použití alternativního typu záznamu není bezpečné pro daný typ a není doporučenou programovací praxí, zejména pro začátečníky.

Záznamy variant však mohou být docela užitečné, pokud se někdy ocitnete v situaci, kdy je budete používat.