Форум программистов, компьютерный форум, киберфорум
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. Показов 6652. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru