Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2010, 09:45   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию Что-то с программой

Пишу мелкую программу, суть такова в = пишешь сколько вышло и снизу на кнопку проверить. При таком примере и не только при таком(0.10*0.2=0.02) когда нажимаю на кнопку пишет ошибку('0.10' is not a valid floating point value(перевод: не действительное значение с плавающей запятой)) что это означает?
И как на форум выложить исходник этой программы?
А так вот код:
Цитата:
unit Unit4;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;

type
TForm4 = class(TForm)
Image1: TImage;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
function fmultiply(f , s , a : real): Boolean;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form4: TForm4;

implementation

{$R *.dfm}

{ TForm4 }

function TForm4.fmultiply(f, s, a: real): Boolean;
begin
if f * s = a
then result := true
else result := false;
end;


procedure TForm4.Button1Click(Sender: TObject);
begin
if fmultiply(StrToFloat(Edit1.Text) , StrToFloat(Edit2.Text) , StrToFloat(Edit3.Text))
then ShowMessage('Правильно')
else ShowMessage('Неправильно');
end;

end.
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 05.08.2010, 09:50   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

вместо точки поставьте запятую при вводе в Edit
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 05.08.2010, 09:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте задать десятичный разделитель (по всей видимости в той Windows, где Вы работаете, десятичный разделитель задан запятой)
для этого двойной щелчёк в Delphi по Вашей форме.
и на событии onCreate вставьте присвоение десятичного разделителя точки.
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
    DecimalSeparator  := '.';
end;
в этом случае программа не будет зависеть от локальных настроек операционной системы.


и ещё.
Вещественные числа нельзя сравнивать так, как это делает Вы!
ОЧЕНЬ рекомендую Вам ознакомится со статьёй
Неочевидные особенности вещественных чисел (с) Григорьев Антон

Почему это так важно? Вот Вам пример из книги (попробуйте понять, что происходит и почему это не работает):
Цитата:
Код:
var R:Real; //или Double или Single
begin
  R:=0.1;
  if R=0.1 then
   Label1.Caption:='Равно'
  else
   Label1.Caption:='Не равно'
end;

Последний раз редактировалось Serge_Bliznykov; 05.08.2010 в 10:06.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.08.2010, 10:02   #4
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
Радость

Или на событие (Events) Edit1 <OnKeyPress> Пропишите
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
     if (Key=',')or(Key='.')then Key:=DecimalSeparator;
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 05.08.2010, 13:49   #5
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
Радость

убери 0 сзади и вместо очки запятую поставь
baster128 вне форума Ответить с цитированием
Старый 05.08.2010, 14:52   #6
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
убери 0 сзади
Точнее где 0?

Всем спасибо, вот только пишет неправильно(какой бы пример не написал)!
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 05.08.2010, 15:03   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну это смотря что вводить!!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 05.08.2010, 15:13   #8
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Попробуй так:
Код:
function TForm4.fmultiply(f, s, a: currency): Boolean;
begin
if f * s = a
then result := true
else result := false;
end;
Не знаю чего, но у меня тоже "Неправильно" говорило... а с currency сработало
W0LF вне форума Ответить с цитированием
Старый 05.08.2010, 15:14   #9
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

здесь почитайте о вещественных числах http://www.delphikingdom.ru/asp/view...?catalogid=374
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 05.08.2010, 15:14   #10
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
Ну это смотря что вводить!!!
непонял???
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Товарищи модераторы за что удалили мою Тему? Или я что то не втыкаю!? Олег Егоров Помощь студентам 0 19.05.2010 19:39
Программа для веб-дизайна. Что модно, а что функционально? Web-Gangsta Свободное общение 12 03.02.2010 20:59
Как узнать что в содержимое буфера обмена добавилось что либо? zotox Общие вопросы Delphi 2 15.09.2009 12:07
А что, если всем объедениться и создать что-нибудь глобальное? kuzmich Свободное общение 61 31.05.2007 21:01
что лучше использовать для создан элементов управл. программой? Alar Общие вопросы Delphi 0 29.10.2006 20:33