A título de esclarecimento, um valor do tipo byte corresponde a um valor
inteiro compreendido entre a faixa de valores de 0 até 255. Um valor do tipo
Real (que é um Double!) pode passar desse valor, e ainda poder receber
valores negativos. A grosso modo, esta também poderia ser uma explicação
‘aceitável’ para não ser possível fazer cast(conversão de tipo) de Real para
Byte.

 

Sds.

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Rubem Rocha
Enviada em: quinta-feira, 2 de setembro de 2010 11:39
Para: delphi-br@yahoogrupos.com.br
Assunto: RES: [delphi-br] cast de float para byte
Prioridade: Alta

 

  

Não se pode fazer cast de um tipo de dados cujo tamanho é maior que o do
dado que irá receber o resultado da conversão. O tipo Byte, como o próprio
nome do tipo diz, tem um byte de tamanho. Já o tipo Real (que no final das
contas é um Double) tem 8 bytes de tamanho. O que se pode fazer é
representar um dado Real (ou Double) como um array de 8 bytes, assim:

program RealToBytes;

{$APPTYPE CONSOLE}

uses SysUtils;

var

cod: Real;

c: array[0..SizeOf(Real) - 1] of byte absolute cod;

i: integer;

begin

cod := 123.45;

for i := 0 to SizeOf(Real) - 1 do

WriteLn(Format('$%2.2X', [c[i]]));

WriteLn(Eoln);

end.

Sds.

De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
[mailto:delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
] Em
nome de felipe govoni
Enviada em: quinta-feira, 2 de setembro de 2010 08:38
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Assunto: [delphi-br] cast de float para byte

bom dia

estou tentando fazer isso:

var cod :real;
c :byte;

begin

cod := 1;
c := byte(cod);

end;

mas da erro de cast, alguem sabe como fazer essa transformação?

-- 
Felipe Govoni
---------------------
GOVONI Sistemas
Fone 8472-8718
www.govoni.com.br




 



[As partes desta mensagem que não continham texto foram removidas]

Responder a