Sapere quante istanze di una Classe sono state create

Da Gambas-it.org - Wikipedia.
Versione del 13 nov 2024 alle 18:54 di Vuott (Discussione | contributi) (Creata pagina con "Per sapere quante ''istanze'', ossia ''Oggetti'', di una CLasse sono state create in un codice, si può leggere il valore contenuto dal membro "int count" della ''Struttura''...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Per sapere quante istanze, ossia Oggetti, di una CLasse sono state create in un codice, si può leggere il valore contenuto dal membro "int count" della Struttura "_CLASS", dichiarata nel file header « User.Home &/ gambasdevel/main/gbx/gbx_class.h », scritta in linguaggio C. [nota 1]
Il predetto membro è così dichiarato :

int count;

Di seguito mostriamo un esempio, nel quale, avendo posto sul Form tre Label, risultano dunque istanziati 3 Oggetti di tipo Label.
Andiamo a leggere il valore del membro "int count" della Struttura "_CLASS", che ci darà il numero di istanze di tipo Label presenti nel codice:

Public Sub Form_Open()

 Dim p As Pointer

' Otteniamo l'indirizzo di memoria della 'Struttura' "_CLASS" relativa alla Classe "Label" del nostro codice:
 p = Object.Address(label)

' Dereferenziamo il "Puntatore" all'area memoria della 'Struttura' "_CLASS" della nostra Classe "Label", spostandoci di 12 byte nella predetta area di memoria, per accedere al suddetto membro "int count" (di tipo "int" il linguaggio C, ossia un Intero occupante 4 byte di memoria) e leggere così il valore da esso contenuto:
 Print int@(p + 12)

End


Note

[1] Vedere anche il seguente paragrafo: Usando i Puntatori per accedere alla Struttura "_CLASS" dei sorgenti di Gambas