Facendo seguito a questo post ( https://forum.lazarus.freepascal.org/index.php/topic,70094.msg545886.html#msg545886 ) vi segnalo che FPC (e Lazarus) riportano un bug sul controllo dell'assegnazione di un valore esterno al SET di un insieme.
{$mode objfpc}{$H+}{$R+}
type
TmyRange = 1..10;
var
x: integer;
Mark: set of TmyRange;
begin
Mark := [5,11]; {<- 11 dovrebbe generare un errore di "RANGE CHECK" invece non viene segnalato alcunchè}
for x in Mark do write(x,' IN Mark');
end.
In pratica il valore "11" viene accettato, anche se il "for ... in" poi non lo riporta (stampa solo il valore "5"). Quindi dal punto di vista esecuzione non ci sono intoppi, però ce ne sono dal punto di vista della logica.
Occhio quindi ad assegnare un valore interno al range sino a quando non risolveranno il problema.