viverosjosem
25-11-2019, 05:05:25
Hola amigos.
Tengo una aplicacion que toma datos de un archivo de texto. En este archivo hay una columna de colores en formato integer. La aplicacion necesita tomar la columna de colores (Quinta columna), y pintar paneles, segun corresponda.
El archivo es similar a este:
1;1;5;6900;16711935;0
1;2;4;5900;65535;0
1;3;3;3900;65535;0
1;4;16;6800;65280;0
1;5;23;5200;16776960;0
1;6;2;3500;-16777201;0
1;7;1;3400;16711935;0
1;8;9;15300;0;0
Aqui va un segmento de codigo, donde explico las lineas importantes para que se entienda el problema.
** Asumiremos que estamos posicionado sobre la primera linea del archivo de texto.
var
...
...
sStrToHexa := String;
iTColor : TColor;
...
...
...
AssignFile(f, Archivo );
Reset(f);
while not SeekEof(f) do
begin
if SeekEoln(f) then
Readln;
Read( f, j );
j := Trim( j );
sCateg := GetParam(j, ';');
sPanel := GetParam(j, ';');
sCodigo := GetParam(j, ';');
sPrecio := GetParam(j, ';');
sColorBtn:= GetParam(j, ';'); //===> Esta linea toma el color de la linea del archivo (columna 5). Por ejemplo: 16711935, Color Rosado.
sStrToHexa := IntToHex(StrToInt(sColorBtn)); // ===> Aqui convertimos el color numerico(16711935) a Hexadecimal, lo que nos da: 00FF00FF
iTColor := '$' + sStrToHexa; //===> Aqui deberiamos asignar el color Hexadecimal, de la forma $00FF00FF
...
...
El problema es que al asignar el color, en la forma: '$' + sStrToHexa, esta asignacion, internamente conserva las comillas (''), con lo que no me entrega el color esperado. Solo me entrega un tono de gris, para todas las lineas de color leidas.
Entonces,
como puedo realisar esa asignacion?, eliminando internamente las comillas?, para que me quede algo como:
iTColor := $00FF00FF;
Espero haberme explicado bien.
Saludos.
Jose Miguel.
Tengo una aplicacion que toma datos de un archivo de texto. En este archivo hay una columna de colores en formato integer. La aplicacion necesita tomar la columna de colores (Quinta columna), y pintar paneles, segun corresponda.
El archivo es similar a este:
1;1;5;6900;16711935;0
1;2;4;5900;65535;0
1;3;3;3900;65535;0
1;4;16;6800;65280;0
1;5;23;5200;16776960;0
1;6;2;3500;-16777201;0
1;7;1;3400;16711935;0
1;8;9;15300;0;0
Aqui va un segmento de codigo, donde explico las lineas importantes para que se entienda el problema.
** Asumiremos que estamos posicionado sobre la primera linea del archivo de texto.
var
...
...
sStrToHexa := String;
iTColor : TColor;
...
...
...
AssignFile(f, Archivo );
Reset(f);
while not SeekEof(f) do
begin
if SeekEoln(f) then
Readln;
Read( f, j );
j := Trim( j );
sCateg := GetParam(j, ';');
sPanel := GetParam(j, ';');
sCodigo := GetParam(j, ';');
sPrecio := GetParam(j, ';');
sColorBtn:= GetParam(j, ';'); //===> Esta linea toma el color de la linea del archivo (columna 5). Por ejemplo: 16711935, Color Rosado.
sStrToHexa := IntToHex(StrToInt(sColorBtn)); // ===> Aqui convertimos el color numerico(16711935) a Hexadecimal, lo que nos da: 00FF00FF
iTColor := '$' + sStrToHexa; //===> Aqui deberiamos asignar el color Hexadecimal, de la forma $00FF00FF
...
...
El problema es que al asignar el color, en la forma: '$' + sStrToHexa, esta asignacion, internamente conserva las comillas (''), con lo que no me entrega el color esperado. Solo me entrega un tono de gris, para todas las lineas de color leidas.
Entonces,
como puedo realisar esa asignacion?, eliminando internamente las comillas?, para que me quede algo como:
iTColor := $00FF00FF;
Espero haberme explicado bien.
Saludos.
Jose Miguel.