 |
Integer To Float :) - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
29.05.2014, 14:38
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 12.04.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
|
Integer To Float :)
Добрый день или еще что-то
Проблемка:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TFileStream;
i: Integer;
Float: Single;
begin
// hex 3E0019EE
// int -300351426
// float 0.1250989139
Stream:= TFileStream.Create('FAIL.BIN', fmOpenRead);
// Пропускаю 4 байта
Stream.Seek(4, soFromBeginning);
// Читаем следующие 4 байта
Stream.Read(i, 4);
Edit1.Text := IntToStr (i);
Float := Как перевести Int в Single ? (i);
Stream.Free;
end;
end.
Собственно вопрос в том как в Delphi перевести 4 байта в Single, дробное число с точным результатом.
на С# или еще хуже С++ это сделать куда проще.
Помогите нубу в Delphi
|
|
|
29.05.2014, 18:20
|
#2
|
|
|
|
Фельдмаршал
|
 Регистрация: 13.08.2009
 Сообщений: 1,004
 Популярность: 25098
 Золото Zhyk.Ru: 350
 Сказал(а) спасибо: 111
Поблагодарили 830 раз(а) в 395 сообщениях
|
Re: Integer To Float :)
Эм. Куда уж проще? Stream.Read(float, 4);
________________
Ни одно доброе дело не остается безнаказанным.
Программы:
PW: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). .
JD: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). .
Статьи: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
29.05.2014, 21:19
|
#3
|
|
|
|
Маршал
|
 Регистрация: 05.05.2009
 Сообщений: 875
 Популярность: 48955
 Золото Zhyk.Ru: 850
 Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
|
Re: Integer To Float :)
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Эм. Куда уж проще? Stream.Read(float, 4);
|
|
 |
|
 |
|
эм, то что ты предлагаешь это просто представленее прежнего содержимого из типа Int как тип Float.
он наверно хочет функцию аналагичную функции IntToSt, только IntToFloat.
что бы к примеру напишу в псевдокоде
Код:
var
i: integer;
Float: Single;
begin
i := 15;
Float := IntToFloat(i);
И флоат равнялся именно 15.0
Если ванга мод у меня работает правильно и он хочет того что я предвидел то вот код:
Код:
procedure TForm2.btn2Click(Sender: TObject);
var
i: integer;
Float: Single;
begin
i := 15;
Float := i.ToSingle;
Caption := Float.ToString;
end;
А если ему надо так как предлагаешь ты то вопрос им поставлен очень тупо. А у тебя скилл ванги прокачан круче моего.
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Написал 2 или более раз одно и то же мне в личку - улетел в блок. Не умеешь пользоваться личными сообщениями, не видишь отправленные, твои проблемы. Учись пользоваться форумом.
|
|
|
29.05.2014, 22:20
|
#4
|
|
|
|
Фельдмаршал
|
 Регистрация: 13.08.2009
 Сообщений: 1,004
 Популярность: 25098
 Золото Zhyk.Ru: 350
 Сказал(а) спасибо: 111
Поблагодарили 830 раз(а) в 395 сообщениях
|
Re: Integer To Float :)
ээээ. зачем?
Разве
Код:
procedure TForm2.btn2Click(Sender: TObject);
var
i: integer;
Float: Single;
begin
i := 15;
Float := i;
Caption := Float.ToString;
end;
Не запишет именно 15?
________________
Ни одно доброе дело не остается безнаказанным.
Программы:
PW: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). .
JD: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). .
Статьи: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). , Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
30.05.2014, 05:53
|
#5
|
|
|
|
Маршал
|
 Регистрация: 05.05.2009
 Сообщений: 875
 Популярность: 48955
 Золото Zhyk.Ru: 850
 Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
|
Re: Integer To Float :)
Ну все верно, что то я подзатупил. Компилятор же сам приведение типов в данном случае делает.
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Написал 2 или более раз одно и то же мне в личку - улетел в блок. Не умеешь пользоваться личными сообщениями, не видишь отправленные, твои проблемы. Учись пользоваться форумом.
|
|
|
30.05.2014, 07:10
|
#6
|
|
|
|
Разведчик
|
 Регистрация: 12.04.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
|
Re: Integer To Float :)
Код:
uses
....Math;
function NumToFloat(dwNum: DWORD): String;
const EXP_BIAS = 127;
var
Str: String;
dwFloat: Cardinal;
snglFloat: Single; // 4 байта
bySign, byExp: Byte;
dwFractPart: Cardinal;
snglFractPart: Single;
begin
dwFloat:= dwNum;
bySign:= (dwFloat shr 31) and $1;
byExp:= Byte((dwFloat shr 23) and $FF);
if byExp = $FF then
begin
//Result:= 'Infinity or Nan';
Result:= '0';
end
else
if byExp = $00 then
begin
//Result:= '0 (Zero) or Denormal';
Result:= '0';
end
else
begin
dwFractPart:= Cardinal( ( Cardinal(dwFloat shl 9) shr 9 ) );
snglFractPart:= 1.0 +
((dwFractPart shr 22) and $1) * 0.5 +
((dwFractPart shr 21) and $1) * 0.25 +
((dwFractPart shr 20) and $1) * 0.125 +
((dwFractPart shr 19) and $1) * 0.0625 +
((dwFractPart shr 18) and $1) * 0.03125 +
((dwFractPart shr 17) and $1) * 0.015625 +
((dwFractPart shr 16) and $1) * 0.0078125 +
((dwFractPart shr 15) and $1) * 0.00390625 +
((dwFractPart shr 14) and $1) * 0.001953125 +
((dwFractPart shr 13) and $1) * 0.0009765625 +
((dwFractPart shr 12) and $1) * 0.00048828125 +
((dwFractPart shr 11) and $1) * 0.000244140625 +
((dwFractPart shr 10) and $1) * 0.0001220703125 +
((dwFractPart shr 9) and $1) * 0.00006103515625 +
((dwFractPart shr 8) and $1) * 0.000030517578125 +
((dwFractPart shr 7) and $1) * 0.0000152587890625 +
((dwFractPart shr 6) and $1) * 0.00000762939453125 +
((dwFractPart shr 5) and $1) * 0.000003814697265625 +
((dwFractPart shr 4) and $1) * 0.0000019073486328125 +
((dwFractPart shr 3) and $1) * 0.00000095367431640625 +
((dwFractPart shr 2) and $1) * 0.000000476837158203125 +
((dwFractPart shr 1) and $1) * 0.0000002384185791015625 +
( dwFractPart and $1) * 0.00000011920928955078125;
snglFloat:= Power(-1, bySign) * Power(2.0, (byExp - EXP_BIAS)) * snglFractPart;
Str:= FloatToStr(snglFloat);
end;
Result:= Str;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
i:= 1148846080;
Edit1.Text := NumToFloat(i);
// результат 1000.0;
end;
end.
Вот что то подобное что я хотел )
у этой функции с нулями проблема.
Ах да забыл сказать что я пишу на Delphi 7
|
|
|
30.05.2014, 08:37
|
#7
|
|
|
|
Маршал
|
 Регистрация: 05.05.2009
 Сообщений: 875
 Популярность: 48955
 Золото Zhyk.Ru: 850
 Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
|
Re: Integer To Float :)
Это делается в одну строку с помощью указателей, взять не типизированный указатель от int разыменовать его и привести к типу single. Но пример давать не буду ибо работая с указателями человек должен четко представлять что он делает, иначе чреваты последствия. Либо делай через эту функцию, либо читай доки по указателям и разбираяся как осуществлять приведение типов через нетипизированные указатели(но нужно очень хорошо понимать что ты делаешь), либо делай как указал Dinmaite, зачем читать из файла в инт а потом преобразовывать во фроат, когда можно сразу считать во флоат и получить желаемый резальтат.
И такой вопрос чем обоснован выбор delphi 7?
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Написал 2 или более раз одно и то же мне в личку - улетел в блок. Не умеешь пользоваться личными сообщениями, не видишь отправленные, твои проблемы. Учись пользоваться форумом.
|
|
|
30.05.2014, 13:04
|
#8
|
|
|
|
Разведчик
|
 Регистрация: 12.04.2013
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 1 сообщении
|
Re: Integer To Float :)
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Это делается в одну строку с помощью указателей, взять не типизированный указатель от int разыменовать его и привести к типу single. Но пример давать не буду ибо работая с указателями человек должен четко представлять что он делает, иначе чреваты последствия. Либо делай через эту функцию, либо читай доки по указателям и разбираяся как осуществлять приведение типов через нетипизированные указатели(но нужно очень хорошо понимать что ты делаешь), либо делай как указал Dinmaite, зачем читать из файла в инт а потом преобразовывать во фроат, когда можно сразу считать во флоат и получить желаемый резальтат.
И такой вопрос чем обоснован выбор delphi 7?
|
|
 |
|
 |
|
Делфи 7 эту версию мне посоветовали, сказав что на ней легче учиться)))
слишком рано я ринулся в это дело  пойду читать про указатели
Спасибо.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Is not valid integer value
|
Роспотребнадзор |
Вопросы и ответы, обсуждения |
7 |
30.06.2012 18:47 |
[Помогите!] Integer to hex
|
Skrillex3 |
Вопросы и ответы, обсуждения |
2 |
23.03.2012 23:44 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 22:55.
|
 |