Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/32: Рейтинг темы: голосов - 32, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39

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

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

Студворк — интернет-сервис помощи студентам
Такой вопрос как сделать что бы в edit записывать числа 1.2 4.5 7.5 1.8 вобщем дроби и delphi не ругался на это?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2010, 23:22
Ответы с готовыми решениями:

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

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

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

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

и дроби надо писать через запятую
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 00:27  [ТС]
А как то подробнее можно?
Или ссылку на сайт где есть примеры и всё описано.
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 00:45
Цитата Сообщение от 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  [ТС]
Я ввожу число в edit и при нажатии кнопки число выводится в StringGrid. Но на число 1,1 выдоёт ошибку
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 01:22
Цитата Сообщение от Mediaplay Посмотреть сообщение
Я ввожу число в edit и при нажатии кнопки число выводится в StringGrid. Но на число 1,1 выдоёт ошибку
и какой код навешан на кнопку?
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 13:39  [ТС]
Вот такой:
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
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 14:08
В вашем коде есть StrToInt()
Если вы надеетесь обработать таким образом дробные числа - то вы пропустили основы паскаля.
правильный совет был дан в первом же ответе.
0
0 / 0 / 0
Регистрация: 05.12.2009
Сообщений: 39
29.05.2010, 14:25  [ТС]
Я знаю что так запишится только целое число поэто и спрасил как с дробями быть...
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
29.05.2010, 14:38
Цитата Сообщение от Mediaplay Посмотреть сообщение
Я знаю что так запишится только целое число поэто и спрасил как с дробями быть...
и вам сообщили в первом же посте StrToFloat()

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

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

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

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

Но это смотря что будет вводиться в поле. Если только два числа и одна единственная операция деления ( знак "/" ), то можно и простенький парсер самому написать.
А если в строке помимо деления могут быть и другие операции или математическое выражение, тогда можно:
Цитата Сообщение от arni Посмотреть сообщение
изобретать велосипед решателя выражений, или искать сторонние парсеры
0
 Аватар для DmitryRUS
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
29.10.2014, 15:37
Да, должны вводиться только два числа и знак "/" между ними. Не знаю как расписать. Может подскажите, если не затруднит?
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
29.10.2014, 16:12
Цитата Сообщение от 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
 Аватар для DmitryRUS
0 / 0 / 0
Регистрация: 16.10.2014
Сообщений: 29
30.10.2014, 18:10
Sergio Leone, благодарю!
Буду разбираться
0
16 / 16 / 10
Регистрация: 11.09.2013
Сообщений: 157
Записей в блоге: 1
01.11.2014, 10:46
А есть ещё специальный компонент из серии AlphaControls, который бы с лёгкостью помог реализовать задуманное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.11.2014, 10:46
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru