Duvida SHL

Ola pessoal...
Seguinte :
Tenho uma aplicação que deve converter 4 bytes em uma variável de ponto flutuante 32 bits...
Exemplo :
dado := ( ord(buf[4]) shl 24 ) or ( ord(buf[3]) shl 16 ) or ( ord(buf[2]) shl 8 ) or ( ord(buf[1] ) );
A variavel dado é do tipo Real;
A variavel buf é do tipo string;
Valor individual dos bytes :
buf[1] =130
buf[2] =35
buf[3] =51
buf[4] =51
dado := ( ord(buf[4]) shl 24 ) or ( ord(buf[3]) shl 16 ) or ( ord(buf[2]) shl 8 ) or ( ord(buf[1] ) );
O valor que deveria ser é : 10.2
O valor que esta aparecendo é : 858989442
Para valores inteiros funciona normalmente(16bits)...
Alguem alguma opinião ?
Leandro
Seguinte :
Tenho uma aplicação que deve converter 4 bytes em uma variável de ponto flutuante 32 bits...
Exemplo :
dado := ( ord(buf[4]) shl 24 ) or ( ord(buf[3]) shl 16 ) or ( ord(buf[2]) shl 8 ) or ( ord(buf[1] ) );
A variavel dado é do tipo Real;
A variavel buf é do tipo string;
Valor individual dos bytes :
buf[1] =130
buf[2] =35
buf[3] =51
buf[4] =51
dado := ( ord(buf[4]) shl 24 ) or ( ord(buf[3]) shl 16 ) or ( ord(buf[2]) shl 8 ) or ( ord(buf[1] ) );
O valor que deveria ser é : 10.2
O valor que esta aparecendo é : 858989442
Para valores inteiros funciona normalmente(16bits)...
Alguem alguma opinião ?
Leandro