0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
1

Как сделать, чтобы в Edit можно было записывать числа: 1.2 4.5 7.5 1.8 (дроби) и Delphi не ругался на это?

28.05.2010, 23:22. Показов 5771. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой вопрос как сделать что бы в edit записывать числа 1.2 4.5 7.5 1.8 вобщем дроби и delphi не ругался на это?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2010, 23:22
Ответы с готовыми решениями:

Как сделать, чтобы в edit можно было вводить только латинские буквы?
Как сделать чтоб в edit можно было вводить только English буквы.

Сделать так, чтобы в фиксированные поля грида можно было записывать значения
Помогите, пожалуйста надо сделать так чтоб в фиксированные поля, можно записывать значения, но где...

Как сделать так, чтобы в строку редактирование (edit) можно было ввести только цифры и запятую?
Недавно начал изучать делфи, У меня вопрос, как можно сделать так чтобы в строку редактирования...

Как сделать так, чтобы можно было вписать другой метод(не знаю, как это описать )
есть код, нужно сделать так чтобы при вводе /op и /god работали независимо друг от друга: то есть,...

19
16 / 14 / 0
Регистрация: 03.05.2010
Сообщений: 189
28.05.2010, 23:27 2
просто использовать переменную типа реал , а для едита использовать Strtofloat(Edit1.Text);

и дроби надо писать через запятую
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 00:27  [ТС] 3
А как то подробнее можно?
Или ссылку на сайт где есть примеры и всё описано.
0
912 / 877 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 00:45 4
Цитата Сообщение от Mediaplay Посмотреть сообщение
Такой вопрос как сделать что бы в edit записывать числа 1.2 4.5 7.5 1.8 вобщем дроби и delphi не ругался на это?
Дельфа низачто не будет ругаться, чтобы вы не записали в Edit, ибо он содержит текст.
Для перевода набранного в число убедитесь, что для разделения дроби вы используете символ, который определен для дроби в региональных настройках винды (ваша программа может узнать о нем из переменной DecimalSeparator).
И вообще, лучше пользуйтесь функцией TryStrToFloat - если что не так, ваша программа корректно обработает исключение и даже вернет вам флаг успешности операции конвертации.
Ну и последнее: не слушайте советов про тип Real
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 00:52  [ТС] 5
Я ввожу число в edit и при нажатии кнопки число выводится в StringGrid. Но на число 1,1 выдоёт ошибку
0
912 / 877 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 01:22 6
Цитата Сообщение от Mediaplay Посмотреть сообщение
Я ввожу число в edit и при нажатии кнопки число выводится в StringGrid. Но на число 1,1 выдоёт ошибку
и какой код навешан на кнопку?
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 13:39  [ТС] 7
Вот такой:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Button6Click(Sender: TObject);
 var i:integer;
begin
for i:= 1 to 50 do
  begin
   seek(f,filesize(f));
   seek(f1,filesize(f1));
   a.Nomer:= random(50);
   a.Mosnostj:=strtoint(edit2.Text);
   a.data:=strtoint(edit3.Text);
   b.Nomer:=a.Nomer;
   b.Familija:=edit8.Text;
   b.KogdaPrisel:= edit9.Text;
   b.KogdaUsel:= edit10.Text;
   write(f1,b);
   write(f,a);
   end;
   updown1.Max:=filesize(f);
   button10.click;
   updown1.Enabled:=true;
   end;
0
912 / 877 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 14:08 8
В вашем коде есть StrToInt()
Если вы надеетесь обработать таким образом дробные числа - то вы пропустили основы паскаля.
правильный совет был дан в первом же ответе.
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 14:25  [ТС] 9
Я знаю что так запишится только целое число поэто и спрасил как с дробями быть...
0
912 / 877 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 14:38 10
Цитата Сообщение от Mediaplay Посмотреть сообщение
Я знаю что так запишится только целое число поэто и спрасил как с дробями быть...
и вам сообщили в первом же посте StrToFloat()

ну и естественно, то куда вы записываете результат, тоже должен принимать Float, а не Integer
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
28.10.2014, 14:27 11
Господа, а если в поле Edit необходимо вбить дробь в таком виде: a/b. Как ее можно считать?
0
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
28.10.2014, 15:26 12
Цитата Сообщение от DmitryRUS Посмотреть сообщение
в поле Edit необходимо вбить дробь в таком виде: a/b. Как ее можно считать?
Delphi
1
2
3
var sDrob : string;
begin
   sDrob := Edit1.Text;

Но, боюсь, что этот ответ Вас не устроит.

А вот что дальше делать с этой строкой - это уже зависит от того, что подразумевается под a и под b и что вообще нужно получить в результате...
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
28.10.2014, 16:18 13
Задача состоит в том, чтобы в поле Edit вбить с клавиатуры дробь (пример: 1/2, 1/8, 3/7 и т.д.) и присвоить ее переменной. Но проблема в том, что при попытке ее присвоения:

Delphi
1
2
3
var x: Float;
begin
x:=StrToFloat(Edit1.Text);
выдает ошибку, мол дробь не float. Как-то так )
0
912 / 877 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
28.10.2014, 16:52 14
я не стал изобретать велосипед решателя выражений, или искать сторонние парсеры, а просто обращаюсь к БД (благо соединение всегда висит). Что-то типа:
SQL
1
2
3
Query1.Text := 'select 12/3';
Query1.ExecQuery;
RESULT := Query1.Fields[0].AsCurrency;
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
28.10.2014, 17:13 15
а без обращения к БД можно это реализовать?
0
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
29.10.2014, 09:22 16
Цитата Сообщение от DmitryRUS Посмотреть сообщение
а без обращения к БД можно это реализовать?
можно, конечно.

Но это смотря что будет вводиться в поле. Если только два числа и одна единственная операция деления ( знак "/" ), то можно и простенький парсер самому написать.
А если в строке помимо деления могут быть и другие операции или математическое выражение, тогда можно:
Цитата Сообщение от arni Посмотреть сообщение
изобретать велосипед решателя выражений, или искать сторонние парсеры
0
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
29.10.2014, 15:37 17
Да, должны вводиться только два числа и знак "/" между ними. Не знаю как расписать. Может подскажите, если не затруднит?
0
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
29.10.2014, 16:12 18
Цитата Сообщение от DmitryRUS Посмотреть сообщение
Да, должны вводиться только два числа и знак "/" между ними. Не знаю как расписать. Может подскажите, если не затруднит?
да не проблема.

Вот:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
  fValue, v1, v2 : double;
  p : integer;
begin
  fValue := 0;
  s := StringReplace(Edit1.Text, ' ', '', [rfReplaceAll]);
  p := Pos('/',s);
  if  p = 0 then {одинарное число}
        fValue := StrToFloat(s)
  else begin
 
     v1 := StrToFloat( Trim( Copy(s, 1, p-1 )));
     v2 := StrToFloat( Trim( Copy(s, p+1, Length(s)-p )));
     if v2<>0 then
       fValue := v1 / v2;
  end;
 
  {выведем полученное значение}
  ShowMessage(' Value = '+ FloatToStr(fValue));
end;
1
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
30.10.2014, 18:10 19
Sergio Leone, благодарю!
Буду разбираться
0
15 / 15 / 10
Регистрация: 11.09.2013
Сообщений: 157
Записей в блоге: 1
01.11.2014, 10:46 20
А есть ещё специальный компонент из серии AlphaControls, который бы с лёгкостью помог реализовать задуманное
0
01.11.2014, 10:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2014, 10:46
Помогаю со студенческими работами здесь

Как сделать так чтобы из продуктов можно было добавить в блюда и это списывалось все на кухне
Как сделать так чтобы из продуктов можно было добавить в блюда и это списывалось все на со склада

Нужно сделать, чтобы в Edit можно было вводить не более 3-х символов
Нужно сделать, чтобы в Edit можно было вводить не более 3-х символов

Как сделать так чтобы в файл можно было записать все числа кроме нуля?
Как сделать так чтобы в файл можно было записать все числа кроме нуля ? Добавлено через 1 минуту...

Как сделать в коде программы, чтобы можно было вводить числа самому, а не случайно. (Код прилагается)
Доброго времени суток. Хочу узнать, как можно сделать вместо случайного ввода чисел заданый ввод....

Как сделать так, чтобы определенный edit нельзя было редактировать ?
На форме имеется едит в котором автоматически просчитывается цена по формуле, как сделать так,...

Как сделать чтобы edit не было видно когда запускаешь программу
Как сделать чтобы edit не было видно когда запускаешь программу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru