Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Вниз

Вопрос от новичка. Деление двух чисел.   Найти похожие ветки 

 
Dmitrijan ©   (2009-04-06 17:52) [0]

Возник вопрос. Нужно разделить целое число на число с плавающей точкой (которое надо задать в эдите).И в результате деления получить
число тоже с точкой.Например:(15/0.8=18.75).
Вот код програмки:unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Label1: TLabel;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c:Real;
begin
a:=15;
b:=StrToFloat(Edit1.Text);
c:=a / b;
Label1.Caption:=FloatToStr(c);
end;

end.

Подскажите пожалуйста, что надо исправить в коде,
чтоб можно было делить не только на целые числа,
но и на числа с точкой тоже.
Заранее благодарю!


 
Ega23 ©   (2009-04-06 17:55) [1]


> что надо исправить в коде,


В частном случае - ничего.
В общем случае - дуракозащиту + проверку DecimalSeparator поставить.


 
Женя   (2009-04-06 18:00) [2]

разделителем служит запятая
вот и сделай так чтобы в edit1 можно было вводить только цифры и зпт
есть где-то в нете


 
Женя   (2009-04-06 18:02) [3]

вот нашел на исходниках.ру
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// Key — символ, соответствующий нажатой клавише.
// Если символ недопустимый, то процедура заменяет его
// на символ с кодом 0. В результате этого символ в поле
// редактирования не появляется, и у пользователя создается
// впечатление, что программа не реагирует на нажатие некоторых
// клавиш.
case Key of
"0".."9": ; // цифра
#8 : ; // клавиша <Back Space>
#13 : Edit2.SetFocus ; // клавиша <Enter>, переводим фокус на второй Edit
// остальные символы — запрещены
else Key :=Chr(0); // символ не отображать
end;
end;


 
AndreyV ©   (2009-04-06 18:03) [4]

> [2] Женя   (06.04.09 18:00)
> разделителем служит запятая

В российской локали.

> вот и сделай так чтобы в edit1 можно было вводить только
> цифры и зпт

-123,456e+10


 
Женя   (2009-04-06 18:05) [5]


> -123,456e+10

я думаю ему это явно не нужно!


 
Ega23 ©   (2009-04-06 18:09) [6]


> разделителем служит запятая


разделителем служит DecimalSeparator


> я думаю ему это явно не нужно!


Это ты так думаешь. А у преподавателя может быть другое мнение.


 
AndreyV ©   (2009-04-06 18:10) [7]

> [5] Женя   (06.04.09 18:05)
>
> > -123,456e+10
>
> я думаю ему это явно не нужно!

Откуда знаешь?

А если такое будет введено1,2,3,
Проверять лучше при выходе из Edit. Например
StrToFloatDef


 
Dmitrijan ©   (2009-04-06 18:11) [8]

Женя благодарю. Буду дальше над числами эксперементировать.


 
Женя   (2009-04-06 18:12) [9]


> Это ты так думаешь. А у преподавателя может быть другое
> мнение.

это да!
там по обстоятельствам


 
Женя   (2009-04-06 18:13) [10]

Удалено модератором


 
Dmitrijan ©   (2009-04-06 18:22) [11]

Не это я не для препода ,просто для себя решил с числами поработать.
В качестве примера решил программу составит которая рубли переводит в
доллары вот и все. Просто программирование хочу освоить для себя. А пока я в нем полный ноль.


 
Ega23 ©   (2009-04-06 18:27) [12]


> просто для себя решил с числами поработать.


1. Навесить дуракозащиту. В Edit1 можно ввести всякое
2. Разобраться с DecimalSeparator
3. Разобраться с числами с плавающей точкой.


 
Dmitrijan ©   (2009-04-06 18:32) [13]

Спасибо Ega23 так и сделаю:

> 1. Навесить дуракозащиту. В Edit1 можно ввести всякое
> 2. Разобраться с DecimalSeparator
> 3. Разобраться с числами с плавающей точкой.


 
AlexDan ©   (2009-04-06 19:31) [14]

Наверно часа три моей головной боли в процессе обучения, дарю,подушка:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(Edit1.text)=0 then
 begin
 chb:=0;
 Edit1.text:="";
 end
 else
 begin
 chb:=StrToFloat(stringreplace(Edit1.text,".",",",[rfReplaceAll]));
 end;
end;


 
Anatoly Podgoretsky ©   (2009-04-06 19:38) [15]


> я думаю ему это явно не нужно!

Так сможешь думать только до тех пор пока не потребуется ввести именно в этом формате, тогда что будешь в затылке чесать?
Не говоря уже об случае, когда разделитель будет далеко не запятая.


 
Ega23 ©   (2009-04-06 19:52) [16]

procedure TForm1.Edit1Change(Sender: TObject);
begin
if length(Edit1.text)=0 then
begin
chb:=0;
Edit1.text:="";
end
else
begin
chb:=StrToFloat(stringreplace(Edit1.text,".",",",[rfReplaceAll]));
end;
end;


Теперь очисти Edit1 бэкспейсом


 
AlexDan ©   (2009-04-06 19:53) [17]

и ничего не будет.)


 
Ega23 ©   (2009-04-06 20:25) [18]


> и ничего не будет.)


Хм.. Действительно...
Но в любом случае так делать не стоит. Можно в бесконечный цикл уйти.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
15-1237529834
Int23
2009-03-20 09:17
2009.05.24
Теоретический вопрос про разработку языков программирования


2-1239259013
Askalot
2009-04-09 10:36
2009.05.24
Поворот компонента Image


15-1236634211
Юрий
2009-03-10 00:30
2009.05.24
С днем рождения ! 10 марта 2009 вторник


2-1239003940
dreamse
2009-04-06 11:45
2009.05.24
Отследить подключение устройства в без оконом приложении


15-1237738703
Тимохов
2009-03-22 19:18
2009.05.24
Пролейте свет, знатоки, PHP5 + MySQL+Apache.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский