Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: DragoRosso - Gennaio 28, 2025, 11:12:04 am

Titolo: Delucidazione su Pascal ...
Inserito da: DragoRosso - Gennaio 28, 2025, 11:12:04 am
Ciao a tutti.

Sul forum internazionale (https://forum.lazarus.freepascal.org/index.php/topic,70004.msg545069/topicseen.html (https://forum.lazarus.freepascal.org/index.php/topic,70004.msg545069/topicseen.html)) viene pubblicato un codice che tutti danno per scontato funzioni (più alcune informazioni più o meno corrette):

Codice: [Seleziona]
var  b8: Boolean = FALSE;
begin
   ....
   ord(b8)  := 1; //Lo metto così, non ci sono dubbi sul valore almeno
   ...
end;

Che significato ha questo codice ? Non lo comprendo e non mi azzardo a postare questo quesito sul forum int.

Lazarus lo compila correttamente, Delphi no. Ma cosa vuol dire ?

ord() è una funzione ... come fà ad accettare una assegnazione ?

Oppure vuol dire che al contenuto della variabile "b8" con un tentativo maldestro, a mio parere, di casting ( ... ord() ... da booleano a valore ordinale) viene assegnato il valore 1 ?

Grazie a quanti vorranno esporre una risposta a ciò.

Ultimamente mi stanno minando molte delle mie basi di conoscenza, mi sembra quasi di essere tornato nel vecchio C ...
Titolo: Re:Delucidazione su Pascal ...
Inserito da: nomorelogic - Gennaio 28, 2025, 03:03:04 pm
nel forum internazionale dicono che ord sia una funzione intrinseca e quindi genera un risultato intermedio
probabilmente è per questo che non c'è un errore

leggendo qua
https://www.freepascal.org/docs-html/rtl/system/ord.html (https://www.freepascal.org/docs-html/rtl/system/ord.html)

Citazione
Historical note:

Originally, Pascal did not have typecasts and ord was a necessary function in order to do certain operations on non-integer ordinal types. With the arrival of typecasting a generic approach became possible, making ord mostly obsolete. However ord is not considered deprecated and remains in wide use today.

Forse deve essere così per retro-compatibilità con codice vecchio.
Titolo: Re:Delucidazione su Pascal ...
Inserito da: DragoRosso - Gennaio 28, 2025, 05:38:54 pm
OK, però li sembra che ci sia una effettiva assegnazione, che poi durante il proseguio sembra porti ad un valore "scorretto" perchè al di fuori del campo di validità.

Non ho fatto il debug per vedere se e cosa viene assegnato (limitandomi a 0 e 1), ma proverò.

EDIT: ho riletto il topic, sopratutto gli ultimi due di @Thaddy e di @440BX e confermano quanto avevo percepito, che quella scrittura assegna dei valori alle variabili.