Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблемы преобразования типа Real в FPC

46K
28 января 2009 года
ukrprogr
2 / / 28.01.2009
До чего же доводит желание сделать лучше! В одном модуле я на Borland (r) Turbo Pascal 7.0 написал:
Код:
Function RealToStr(Value : Real) : String;
Begin
 RealToStr:=Chr(Mem[Seg(Value):Ofs(Value)+0])+
 Chr(Mem[Seg(Value):Ofs(Value)+1])+
 Chr(Mem[Seg(Value):Ofs(Value)+2])+
 Chr(Mem[Seg(Value):Ofs(Value)+3])+
 Chr(Mem[Seg(Value):Ofs(Value)+4])+
 Chr(Mem[Seg(Value):Ofs(Value)+5]);
end;
Function StrToReal(Value : String) : Real;
Var RealValue : Real;
Begin
 If Length(Value)<>6 Then StrToReal:=0.0 Else
 Begin
  Mem[Seg(RealValue):Ofs(RealValue)+0]:=Ord(Value[1]);
  Mem[Seg(RealValue):Ofs(RealValue)+1]:=Ord(Value[2]);
  Mem[Seg(RealValue):Ofs(RealValue)+2]:=Ord(Value[3]);
  Mem[Seg(RealValue):Ofs(RealValue)+3]:=Ord(Value[4]);
  Mem[Seg(RealValue):Ofs(RealValue)+4]:=Ord(Value[5]);
  Mem[Seg(RealValue):Ofs(RealValue)+5]:=Ord(Value[6]);
  StrToReal:=RealValue;
 end;
end;

На FreePASCAL эти функции компилируются и работают без вылетов но функция RealToStr возвращает пятисимвольную строку состоящую из символов с кодом 0 вместо преобразованного числа как в случае с Turbo Pascal'ем. Господа продвинутые программисты пожалуйста помогите! Функции позарез нужны в FPC! Вариант с Move типа Move(RealValue,Ptr(Seg(MyStr),Ofs(MyStr)+1)^,6); не предлагать - не работают. Преобразовывать Real в строковой вид чтобы снова потом переконвертировать в числовой занимает слишком много времени. Заранее благодарю!
14
28 января 2009 года
Phodopus
3.3K / / 19.06.2008
Это вы че, аскии-коды шести байтов риал-а вывести хотите чтоль? А если риал = 0?
46K
28 января 2009 года
ukrprogr
2 / / 28.01.2009
Цитата: Phodopus
Это вы че, аскии-коды шести байтов риал-а вывести хотите чтоль? А если риал = 0?

То выйдет строка длиной 6 символов содержащая символы с кодом 0. Тема тут тоже поднята: Форум Соурцес.Ру. Но дискуссия продолжается, т.к. подобной проблемы в природе ещё не было видано.

14
29 января 2009 года
Phodopus
3.3K / / 19.06.2008
Ну я вообще-то 2 вопроса задал..
Нету FPC, не проверить. А если вместо Mem[] Поставить Ptr()^ ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог