Hola Norum,
Fíjate que en
Código Delphi
[-] procedure RGBtoHSL (RGB: TColor; var H, S, L : double);
los parámetros H, S, y L están después del var. Ese valor indica que dichos parámetros se pasan del tipo valor. Esto quiere decir que la variable que suministre en cualquiera de esos parámetros puede ser modificada dentro del procedimiento.
Te lo explico con un ejemplo:
Cuando tu haces:
procedure SeleccionarOperacion(Operacion: integer);
begin
...
end;
El valor de operación permanecerá fijo. Podrá ser modificado dentro del cuerpo del procedimiento, pero una vez que termine el valor de Operación seguirá siendo el mismo. Es decir que si pasas el valor 5, seguirá siendo 5.
Mientras que si haces:
Código Delphi
[-]
SeleccionarOperacion(var Operacion: integer);
begin
...
Operacion: algo; ...
end;
el valor al finalizar se modificó. Por tanto, si pasas el valor 5, cuando finalize podrá valer 1, 70, 100, etc...
Por tanto cuando llames a RGBtoHSL, deberás suministrar variables en dichos parámetros. Una vez que finaliza el procedimiento, en H, S y L quedará el valor correspondiente.
Con respecto a tu otra duda, lee sobre las funciones GetRValue, GetBValue, GetGValue. RGBToColor, ColorToRGB, entre otras.
Saludos,