Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Guba - Aprile 24, 2021, 08:45:44 pm

Titolo: Notazione "@nomevariabile" in Delphi
Inserito da: Guba - Aprile 24, 2021, 08:45:44 pm
 :-X :-X
Scusate gente, vi sembrerà una cosa alqualnto ridicola, ma cosa significa la notazione

@nomevariabile

???

Inoltre volevo una conferma: la notazione ^nomevariabile si riferisce al contenuto della zona puntata da un puntatore type-castata in qualche modo con un puntatore che si scrive nomevariabile^
E' corretto ?
Grazie.

Titolo: Re:Notazione "@nomevariabile" in Delphi
Inserito da: DragoRosso - Aprile 24, 2021, 10:51:54 pm
@nomevariabile indica un puntatore alla variabile.

Questo consente di accedere direttamente alla memoria della variabile e lavorare con i puntatori.

La notazione ^nomevariabile viene usata per referenziare la variabile tramite il suo puntatore durante la dichiarazione;

La notazione nomevariabile^ invece e la deferenziazione del puntatore tipizzato (quindi si ritorna alla definizione primaria).

Esempio:

Codice: [Seleziona]
Type
  TProva = array of integer;        //definizione tipo
  PTProva = ^TProva;                 //definizione puntatore tipizzato

Var
   Pluto: TProva
   PPluto: PTProva;                        ************* EDIT corretto : al posto di =  :o

begin
   SetLength(Pluto, 4);
   Pluto[0] := 10;
   Pluto[1] := 345;
   Pluto[2] := 32;
   Pluto[3] := 48;
   PPluto := @Pluto;

   ShowMessage( (PPluto^[2]).toString);    //stamperà 32   
end;

Ciao
Titolo: Re:Notazione "@nomevariabile" in Delphi
Inserito da: Guba - Aprile 25, 2021, 02:20:27 am
Ciao Dragorosso.

Grazie per la risposta! MOLTO chiarificatrice.
In pratica permette una forma di semplificazione nelle notazioni con puntatori.
La domanda è, se il puntatore "@coniugato" è un oggetto complesso come una classe, esso eredita anche tutte le caratteristiche dell'oggetto puntato ?
Posso usarlo, ad esempio con:  x := @MioOggetto.Verifica(valore);   
Oppure così:   @mioOggetto.valore1 := x;   
?

BWAS (Be well and safe).



Titolo: Re:Notazione "@nomevariabile" in Delphi
Inserito da: nomorelogic - Aprile 25, 2021, 02:38:36 am
La domanda è, se il puntatore "@coniugato" è un oggetto complesso come una classe, esso eredita anche tutte le caratteristiche dell'oggetto puntato ?

@ serve ad ottenere l'indirizzo di una variabile, procedura, funzione, oggetto ecc...

quindi nell'esempio precedente
Codice: [Seleziona]
PPluto := @Pluto;

il puntatore è PPluto e viene valorizzato con l'indirizzo di Pluto (che è una variabile)
dopo l'assegnazione hai a disposizione un puntatore e ne puoi usare il contenuto con la deferenziazione