Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Чтение вещественных чисел из файла


Автор: Garyck 7.2.2013, 19:13
Здравствуйте,
Помогите разобраться с чтением из файла вещественных чисел.
В файл записаны географические координаты, в бинарном виде. Нужно их достать в удобоваримом виде.
Например, в файле записано: 
HEX: E4 49 5F 42
Должно получиться: 55.822158

Считывал поток и передавал в вещественные и целые переменные - безрезультатно, получается не то что нужно.

Автор: Чучмек 7.2.2013, 19:44
А какой вещественный тип в delphi помещается в 4 байта?

Автор: Garyck 7.2.2013, 19:50
Цитата(Чучмек @  7.2.2013,  19:44 Найти цитируемый пост)
А какой вещественный тип в delphi помещается в 4 байта?

Single

Вручную можно, с помощью преобразования по IEE754:
http://www.h-schmidt.net/FloatConverter/IEEE754.html

Но хотелось бы чуть проще.

Автор: Qu1nt 7.2.2013, 19:59
http://docwiki.embarcadero.com/Libraries/XE3/en/System.Classes.TReader.ReadSingle

Автор: Чучмек 7.2.2013, 20:11
Код

function ToSingle(const val):Single;
begin
 result:=Single(val);
end;

procedure TForm1.Button1Click(Sender: TObject);
var c:cardinal;
begin
c:=$425f49e4;
Caption:=FloatToStr(ToSingle(c));
end;


Добавлено через 6 минут и 30 секунд
Или
Код

type
TToSingle=record
 case integer of
 0:(AsCardinal:Cardinal);
 1:(AsSingle:Single);
 end;

procedure TForm1.Button1Click(Sender: TObject);
var c:cardinal;
begin
c:=$425f49e4;
Caption:=FloatToStr(TToSingle(c).AsSingle);
end;


Добавлено через 7 минут и 37 секунд
Или
Код

procedure TForm1.Button1Click(Sender: TObject);
var v:TToSingle;
begin
v.AsCardinal:=$425f49e4;
Caption:=FloatToStr(v.AsSingle);
end;


Добавлено через 9 минут и 17 секунд
Или
Код

procedure TForm1.Button1Click(Sender: TObject);
var  c:cardinal;
begin
c:=$425f49e4;
Caption:=FloatToStr(PSingle(@c)^);
end;

И еще с десяток способов.

Автор: Garyck 7.2.2013, 20:32
Огромное спасибо!
Теперь, разобрался smile 

Автор: northener 8.2.2013, 01:17
Цитата(Garyck @  7.2.2013,  20:32 Найти цитируемый пост)
Огромное спасибо!
Теперь, разобрался 

Не забудь сказать об этом на всех прочих форумах куда запостил сей вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)