Hello

Hello,

I'm trying to convert RGB string like '252,220,222' to a TColor value and use it in my FMX application.

I have 2 issues :

- 1st one :
''252,220,222'' is a pale rose color and should be converted to $FCDCDE but my function produce something else $F5E7EA !

- 2nd one
Clearing an FMX TBimap with this value result in an transparent bitmap : Bitmap.Clear(TAlphaColor($F5E7EA))

function RGBStringToColor(const RGBString: String;
const Delimiter: Char = ','): TColor;
var
RGBStringToConvert: TStringList;
begin
RGBStringToConvert := TStringList.Create;
try
RGBStringToConvert.Delimiter := Delimiter;
RGBStringToConvert.StrictDelimiter := True; // Requires D2006 or newer.
RGBStringToConvert.DelimitedText := RGBString;

if RGBStringToConvert.Count = 3 then
begin
TColorRec(Result).A := $00;
TColorRec(Result).R := RGBStringToConvert[0].ToInteger;
TColorRec(Result).G := RGBStringToConvert[1].ToInteger;
TColorRec(Result).B := RGBStringToConvert[2].ToInteger;
end
else
Result := RGB(0, 0, 0);

finally
RGBStringToConvert.Free;
end;
end;

Comments