Loading [MathJax]/extensions/Safe.js
Образовательный форум - онлайн помощь в учебе
Помощь в решении задач => Программирование => Тема начата: PandaPivovar от 28 Ноября 2009, 21:18:00
-
При запуске работы и введении в поле числа с запятой возникает ошибка. При целых значениях выдаёт цивильный ответ, в задании есть тело программы, но даже с ним не выходит(у меня). Выкладываю куски с кодом.
procedure TTmemo.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','-','.',#8]) then key:=#0;
end;
procedure TTmemo.Button1Click(Sender: TObject);
var x,y,a,b,esp:real;
n:byte;
begin
Tmemo.Lines.Clear;
y:=0;
n:=0;
b:=-1.0;
x:=StrToFloat(Edit1.Text);
esp:=StrToFloat(Edit2.Text);
Repeat
b:=-b*x;
inc(n);
a:=b/n;
y:=y+a;
Tmemo.Lines.Add('Интерация'+IntTostr(n)+' a=' +
FormatFloat('0.00000',a)+' y='+
FOrmatfloat('0.00000',y));
Until abs(a)< esp
-
Во первых посмотри вот что в Delphi в компоненте edit есть свойство котоое определяет знак, который будет разделитлем в числе с точкой. Во вторых применяй точку а не запятую) И в третьих используй функцию val вместо StrToFloat . Она выдает номер символа который не преобразуется.
-
Val неактуальная переменная
-
val это функция во-первых)А что значит неактуальная она решает задачу и гораздо информативней чем ту что вы используете
-
Когда переменую засовываю в функцую выдаёт ошибку:) вот о чём я:)
-
Во первых для нее нужно три параметра, последний это переменная где код ошибки.
-
В чем ошибка?
-
При вводе в поле Edit1 значение 0.25(значение из примера), возникает окно с ошибкой 0.25 is not valit floating point value. Как я понимаю проблема в значении с точкой.
-
У меня с запятой сработал ввод (я написал простую маленькую прогу берущую из edit'ов) два значения, а с точкой как у вас. Однако решением может быть DecimalSeparator:='.'. Это переменная отвечает в Delphi за символ который отдлеляет целую часть от дробной. Поэтому в программу можно добавить код, просящий пользователя определить символ отделения дробной части от целой. У меня с точкой все корректно обработалось после того как я перед вызовом функции StrToFloat(); вставил инструкцию DecimalSeparator:='.'
-
Спасибо за ответ:) Ваш совет помог избавиться от этой ошибки:)