Если edit пустой то ошибка

gekasa

1 / 1 / 0

Регистрация: 21.09.2014

Сообщений: 26

1

11.11.2015, 21:57. Показов 12125. Ответов 18

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Задача на площадь треугольника за 3 отрезками

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;
 
type
  TForm2 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Image2: TImage;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label2: TLabel;
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form2: TForm2;
  a,b,c,p,S:real;
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
 
if not(Key in [#8]) then
    Key := #0;
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
    #8,'0'..'9':;
    ',','.':
    begin
    if pos(DecimalSeparator,Edit1.Text)=0 then Key:=DecimalSeparator
    else Key:=#0
    end
    else Key:=#0;
end;
if Edit1.Text='0' then
  if Key='0' then Key:=#0;
end;
 
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
    #8,'0'..'9':;
    ',','.':
    begin
    if pos(DecimalSeparator,Edit2.Text)=0 then Key:=DecimalSeparator
    else Key:=#0
    end
    else Key:=#0;
end;
if Edit1.Text='0' then
  if Key='0' then Key:=#0;
end;
 
procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
    #8,'0'..'9':;
    ',','.':
    begin
    if pos(DecimalSeparator,Edit3.Text)=0 then Key:=DecimalSeparator
    else Key:=#0
    end
    else Key:=#0;
end;
if Edit1.Text='0' then
  if Key='0' then Key:=#0;
end;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Label2.Caption:='Ðåçóëüòàò';
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
 if Edit1.Text <> '' then
a:=strtofloat(Edit1.Text);
b:=strtofloat(Edit2.Text);
c:=strtofloat(Edit3.Text);
if (abs(a-b)<c)and(c<(a+b))then
begin
p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
label2.Caption:=floattostr(S);
end
else showmessage('íå òðåóãîëüíèê');
end;

Помогите вывести ошибку , если Edit пустые , при это также должно выдавать ошибку , если не является треугольником



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

11.11.2015, 21:57

Ответы с готовыми решениями:

если edit пустое или =0 — вывести ошибку
Здравствуйте!
Мне нужно сделать так, чтобы в Edit1 (туда нужно вводить размерность массива)…

Если введён первый нуль в Edit,и не стоит запятая после него, выдать ошибку
Здравствуйте программисты! Подскажите пожалуйста, как Если введён первый нуль в Edit1,и не стоит…

Если строка- запись целого числа, то вывести 1; если вещественного , то вывести 2; если строку нельзя преобразовать в число, то вывести 0.
Дана строка. Если она представляет собой запись целого числа, то вывести 1; если вещественного (с…

Не учитывать пустые Edit
Как, в данном случае, не учитывать пустые Edit. То есть что бы программа сохраняла результаты…

18

droider

Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,075

11.11.2015, 22:33

2

Цитата
Сообщение от gekasa
Посмотреть сообщение

вывести ошибку , если Edit пустые

Delphi
1
2
3
4
5
6
if (Edit1.Text = '') and (Edit2.Text = '') and (Edit3.Text = '') then
begin
ShowMessage('Не заданы стороны треугольника! Заполните поля'); //вывод сообщения
end
else
...

Цитата
Сообщение от gekasa
Посмотреть сообщение

выдавать ошибку , если не является треугольником

Delphi
1
if (c=a+b) or (b=a+c) or (a=b+c) then ShowMessage('Не является треугольником');



0



1 / 1 / 0

Регистрация: 21.09.2014

Сообщений: 26

11.11.2015, 23:03

 [ТС]

3

Не работает почему то, я в Button1.Click вставляю , правильно ?



0



пофигист широкого профиля

4662 / 3096 / 855

Регистрация: 15.07.2013

Сообщений: 17,865

12.11.2015, 00:25

4

Цитата
Сообщение от gekasa
Посмотреть сообщение

я в Button1.Click вставляю , правильно ?

Не знаю правильно ли ты вставляешь в Button1.Click, но попробуй вставить в Button2Click.



0



3035 / 2217 / 511

Регистрация: 11.09.2009

Сообщений: 8,196

12.11.2015, 02:28

5

Цитата
Сообщение от droider
Посмотреть сообщение

if (c=a+b) or … (‘Не является треугольником’);

if (c>=a+b) …



0



0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 20:32

6

Ребята подскажите, кто сталкивался с таким вопросом:
Для числового компонента Edit типа Integer, в Делфи7 нужно прописать условие, в котором нужно показать:

Если Edit пустой, то за этим последуют определённые инструкции.

Для символьного понятно: Edit1.text:=»
А вот как быть с числовым? Сразу скажу, что перевод в строку:IntToStr(Edit1.text):=», не вариант, потому что в условиях фигурируют только числовые компоненты Edit,если переведу в строку, то будет конфликт числовых со строковым.



0



Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,075

30.11.2015, 20:52

7

Цитата
Сообщение от Евгик
Посмотреть сообщение

в условиях фигурируют только числовые компоненты Edit

поясните



0



Евгик

0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 21:11

8

Поясняю: Есть условие, в котором хочу учесть 2 эдита числового типа. Одному присвоить значение 0, а второму пусто.
Если пусто не присвою, то при нажатии на кнопку обработать, сообщение: »is not a valid floating point value
Что в переводе приблизительно так: » не действительное значение с плавающей запятой.
Но чтоб, присвоить значение пусто, я знаю только показатель символьного типа». А для числового как показать?
Пример програмки где возникает ошибка:
Эдит в данном случае является переменной.
вот краткий отрывок с програмки: можете скомпилировать у себя и проверить:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var
a,b:real;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit1.text);
begin
if (a=0) and (b='') //не так не получается.
if (a=0) and floattostr(b)='' //не так. 
then begin
edit2.Visible:=false;
end;
end.



0



2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 21:37

9

Цитата
Сообщение от Евгик
Посмотреть сообщение

то при нажатии на кнопку обработать

Так все ведь много проще — достаточно

запретить

реакцию кнопки на нажатие, выставив его св-ву Enabled значение False, если содержимое того или иного Edit’а некорректно)

И сделать это удобнее всего в обработчиках событий OnChange и OnExit тех самых Edit’ов, содержимое которых напрямую влияет на возможность проведения тех или иных расчетов по нажатию кнопки.



0



0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 21:59

10

Я вижу, толковые ответы у тебя есть, за что спасибо! Подумаю, как их можно применить!
Но понятие корректности содержимого эдита, здесь не актуально! Поскольку у эдита должно быть 4 формы: 0, целое число, число с запятой и пусто. И во всех случаях должны происходить определённые вычисления и поля должно быть активно!



0



Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,075

30.11.2015, 22:00

11

Может лучше вести обсуждение в отдельно созданной для этого теме?



0



0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 22:01

12

Согласен!



0



2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 22:21

13

Цитата
Сообщение от Евгик
Посмотреть сообщение

понятие корректности содержимого эдита, здесь не актуально!

Хренасе заява)

Да как же не актуально-то, если значение «пусто» невозможно преобразовать ни в какое число в принципе, хоть ты из штанов выпрыгни ?)

Цитата
Сообщение от Евгик
Посмотреть сообщение

0, целое число, число с запятой

Чем, по-твоему, 0 отличается от 0.00000 ? Какую из ф-ций преобразования ты будешь использовать, заранее не зная что юзер впендюрит в Edit — «0» или «0.00000» ?

Тот же самый вопрос тебе на засыпку для случая впендюривания «5» и «5.000000000000000»)



0



0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 22:31

14

Блокировка стоит для эдита в событии OnKeyPress, пользователь сможет ввести только числа!



0



2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 22:35

15

Цитата
Сообщение от Евгик
Посмотреть сообщение

пользователь сможет ввести только числа!

Ну а я о чем ?)

Вот он ввел «5» — это он число ввел ? Число.
А потом он ввел «5.00000» — это он число ввел ? Тоже число.

И тут же вопрос — в какой тип ты будешь преобразовывать то что он ввел ?



0



0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 22:50

16

Ну в моём случае случае он не введет число с точкой. Блокировка сработает.
Потому что в событии OnKeyPress проставлена блокировка на все кроме чисел.
Ну, а по твоей теме:
5 интеджер присвою
5.0000000 реал к примеру



0



2649 / 2270 / 279

Регистрация: 24.12.2010

Сообщений: 13,723

30.11.2015, 22:53

17

Цитата
Сообщение от Евгик
Посмотреть сообщение

в событии OnKeyPress проставлена блокировка на все кроме чисел

Сказка про белого бычка)

И «5» — число, и «5.000» —

тоже

число)



0



0 / 0 / 0

Регистрация: 30.11.2015

Сообщений: 33

30.11.2015, 23:47

18

да, с тобой не поспоришь! не буква.



0



Arcor

5694 / 2285 / 466

Регистрация: 20.11.2009

Сообщений: 7,697

Записей в блоге: 1

01.12.2015, 02:11

19

а если отследить это все чудо вот так

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
var k: Integer;
    l: Extended;
begin
  if not TryStrToInt(Edit1.Text, k) then
    ShowMessage('Ошибка, введено не целое число');
 
  if not TryStrToFloat(Edit1.Text, l) then
    ShowMessage('Ошибка, введено не вещественное число');
 
end;

если будет введено целое — оно пропустится полностью без каких либо сообщений, будет это вещественное число, первая проверка зафиксирует, что число не является целым, во втором случае пропустится
введем символ(не цифры) не будет пропущенно ни одной из этих проверок

или в чем вся конкретная соль сего задания?

в k и l будут возвращены соответствующие результаты, если проверка будет успешной, в них запишется обработанное значение, иначе в этих 2 переменных будет вероятнее всего мусор, который возможно выдаст крит при дальнейших преобразованиях



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

01.12.2015, 02:11

Помогаю со студенческими работами здесь

Если хотя бы один из Edit-ов или ячейка StringGrid не заполнены, то вывести сообщение об ошибке
ПРоблема заключается в том что есть форма, на форме расположена таблица StringGrid и 2 Edit в…

Если a>b, то вывести дату рождения, если a=b, то вывести ФИО, если a<b, то вывести количество пальцев на руке
Добрый день, подскажите пожалуйста, что не так, ломаю голову не один час, а ошибку найти не могу….

Если вводит в объект Edit отрицательное число, то выдает ошибку «-» is not a valid integer value». Как исправить?
var
Form1: TForm1;
a,r:integer;
l,s,v,p:real;

implementation

{$R *.dfm}

procedure…

из таблицы DBGrid нужно вывести в edit количество строк из столбца Статус со значением работает, вот код, но выдает ошибку
Здравствуйте, запрограммировала базу данных через библиотеку ADO, из таблицы DBGrid нужно вывести…

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

Или воспользуйтесь поиском по форуму:

19

Читайте также:

  1. Диагностика результативного компонента правовой обученности
  2. Женское свойство (норов) и на свинье не объедешь.
  3. Методы и средства ограничения доступа к компонентам ЭВМ
  4. Получение катализаторов нанесением активного компонента на носитель
  5. Порядок реализации федерального компонента
  6. Свойство емкости

Filter – это строка, которая служит для задания критерия, по которому производится выборка записей. В ней нужно указать имя поля, по которому идет фильтрация, затем = ( если нужно полное совпадение) либо LIKE (если мы хотим организовать поиск и по части слова) и само значение, по которому выбираются записи.

Допустим, есть таблица с полями Фамилия, Имя, Отчество. Нужно фильтровать данные по одному из полей (на выбор), т.е. пользователь должен иметь возможность выбрать по какому из полей фильтровать данные. Задача стоит такая отсеивать данные по мере ввода искомой строки в Edit.

Расположим на форме компоненты Combobox и Edit. Combobox будет использоваться для выбора столбца, а в Edit будет вводится искомое слово. Заполняем свойство Items в Combobox именами столбцов. Затем в обработчике события Edit1Change пишем следующее:

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Length(Edit1.Text) > 0 then
begin
ADOTable1.Filtered:=false;
ADOTable1.Filter:=Combobox1.Text + ‘ LIKE ‘ + #39 + Edit1.Text + ‘%’ + #39;
ADOTable1.Filtered:=true;
end
else ADOTable1.Filtered:=false;
end;

Прокомментирую код: если Edit не пустой (при пустом вылетит ошибка), отключаем фильтрацию, формируем строку фильтра, запускаем фильтрацию, если Edit пустой — отключаем фильтрацию.
В самом простом случае, если не нужно давать возможность выбора определенного столбца, а фильтровать по одному конкретному полю(например «ФАМИЛИЯ»), строка фильтра выглядела бы следующим образом: ADOTable1.Filter:=’ФАМИЛИЯ LIKE ‘+ #39 + Edit1.Text + ‘%’ + #39;

Строка-условие фильтра означает следующее — выбрать те записи из столбца ‘ФАМИЛИЯ’, которые начинаются с тех же символов, что и набраны в Edit1.Text.

Особое внимание обратите на пробелы — «потеряете» пробел — не будет работать.

Ключевое слово LIKE позволяет по заданному шаблону сравнивать строки. При этом нужно знать следующее:

символ ‘_’ (подчеркивание) – заменяет любой одиночный символ,

символ ‘%’ (процент) – заменяет любую последовательность из символов.

Знак #39 — означает номер символа ‘ (одинарная кавычка) в кодовой таблице ASCII. Дело в том, что значение на фильтрацию нужно указывать в одинарных кавычках, а так как одинарные кавычки используются в Delphi для ограничения строк, то чтобы внутри строки поставить одинарную кавычку, её нужно поставить дважды. Конструкция #39 + Edit1.Text + ‘%’ + #39 идентична »» + Edit1.Text + ‘%’ + »».

Если, например, нужно искать любое вхождение искомой строки в записях, а не начиная с первого символа, то строка фильтра выглядела бы следующим образом:

ADOTable1.Filter:=’ФАМИЛИЯ LIKE ‘ + #39 + ‘%’ + Edit1.Text + ‘%’ + #39;

Заметили ‘%’ перед Edit1.Text? Переводится так — выбрать те записи из столбца ‘ФАМИЛИЯ’, в которых есть последовательность символов, которые набраны в Edit1.Text.

Часто нужно фильтровать по нескольким столбцам. Тут применяется немного иная конструкция.

Добавим еще два компонента Edit на форму. Combobox использовать не будем, его можно удалить, т.к. у нас каждое поле (Edit) будет отвечать за ввод информации по определенному столбцу. Еще добавим кнопочку, она будет запускать фильтрацию. Казалось бы, следующая конструкция должна корректно работать:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Filtered:=false;
ADOTable1.Filter:=’ФАМИЛИЯ LIKE ‘+ #39 + Edit2.Text + ‘%’ + #39 +’ AND ‘ + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39 + ‘ AND ‘ + ‘ОТЧЕСТВО LIKE ‘ + #39 + Edit4.Text + ‘%’ + #39;
ADOTable1.Filtered:=true;
end;

Она и работает, но только в том случае, если данные введены во все три поля. Если одно из полей ввода(Edit) пустое — вылетает ошибка «Аргументы имеют неверный тип». Впрочем, есть способ с этим бороться. Сначала код:

procedure TForm1.Button1Click(Sender: TObject);
var filtr, // формируемая строка фильтра
add: string;
begin
ADOTable1.filtered:=false;
filtr:=»;
if length(edit2.text) > 0 then
filtr:= ‘ФАМИЛИЯ LIKE ‘+ #39 + Edit2.Text + ‘%’ + #39;
if length(edit3.text) > 0 then
begin
if length(filtr) > 0 then add:= ‘ and ‘ else add:=»;
filtr:=filtr + add + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39;
end;
if length(edit4.text) > 0 then
begin
if length(filtr) > 0 then add:= ‘ and ‘ else add:=»;
filtr:=filtr + add + ‘ОТЧЕСТВО LIKE ‘+ #39 + Edit4.Text + ‘%’ + #39;
end;
if length(filtr) > 0 then
begin
ADOTable1.Filter:= filtr;
ADOTable1.filtered:=true;
end
else Showmessage(‘Все поля пусты!’);
end;

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

Например, если поле Edit2 (Фамилия) пустое, то соответственно и строка фильтра будет пуста (filtr:=») , а, например, поле Edit3 (ИМЯ) заполнено, это значит, строка фильтра должна иметь вид ‘ИМЯ LIKE ‘ + #39 + Edit3.Text + ‘%’ + #39 , а не ‘ and ‘ + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39 , (т.е. без ‘ and ‘ вначале). Следующий фрагмент кода это и выполняет:

…..
if length(edit3.text) > 0 then
begin
if length(filtr) > 0 then add:= ‘ and ‘ else add:=»;
filtr:=filtr + add + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39;
end;
…..

Если Edit3 не пустое, то проверяем строку фильтра(filtr) если она не пуста, то прибавляем к сторке фильтра ‘ and ‘ + ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39, если пуста, то просто ‘ИМЯ LIKE ‘+ #39 + Edit3.Text + ‘%’ + #39.

Присваиваем сформированную строку(filtr) свойству ADOTable1.Filter и запускаем фильтрацию.

…..
if length(filtr) > 0 then
begin
ADOTable1.Filter:= filtr;
ADOTable1.filtered:=true;
end
else Showmessage(‘Все поля пусты!’);
…..

Соответственно, если на этом этапе filtr=», значит, ни одно из полей не было заполнено, о чем и выводим соответствующую надпись.

Кроме операции and можно использовать и другие логические операции or, not, xor, при формирования строки-условия фильтрации по нескольким столбцам, хотя такая необходимость возникает достаточно редко.

8. Теперь рассмотрим организацию поиска через ADOQuery. Поиск можно осуществлять как на текущей, так и на другой форме.

9. Приступим к организации самого поиска. Для этого нам нужен компонент ADOQuery. Предварительно не забудьте «познакомить» формы и юниты друг с другом (см. рисунок ниже).

После этого в свойстве Connection компонента ADOQuery станет доступен компонент ADOConnection с формы1.

Следующее свойство, самое важное, отвечающее за сам поиск – свойство SQL. В него мы должны внести запрос, формирующий результирующую таблицу. К примеру, запрос на рисунке выбирает все поля из таблицы base, в которых значение поля price равно 55000. Последнее свойство, которое нужно указать – свойство Active устанавливаем в true.

Для отображения результата поиска нужны еще 2 компонента: DataSource (в свойстве DataSet указываем ADOQuery) для привязки результата к сетке таблицы на форме и сама таблица DBGrid (в свойстве DataSource указываем тот DataSource, который только что поместили на форму). Результат должен уже отобразиться в таблице.

10. Если вы хотите осуществлять несколько видов поиска, не обязательно для каждого из них делать отдельную форму и использовать отдельный компонент ADOQuery. К примеру, можно организовать это следующим образом:

Т.е. вносить значение в свойство SQL не вручную, а программно, по нажатию на кнопку ИСКАТЬ, в зависимости от выбранной радиокнопки. Это можно сделать при помощи команды ADOQuery.SQL.Add(…). В скобках указывается строка запроса.


Дата добавления: 2015-11-28; просмотров: 389 | Нарушение авторских прав



mybiblioteka.su — 2015-2023 год. (0.015 сек.)

 
новичок_из_сыктывкара ©
 
(2004-03-30 18:39)
[0]

Люди помогите надопроверить пустая ли Edit ? если пустая то messagebox? если что то есть то тогда выполнять дальше…вроде все правильно, но что то не получается…может подскажете в чем ошибка, или свой метод…Очень прошу помочь…)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
d,e,r:real;
kd,ke:real;
code:integer;
begin
e:=strtofloat(edit3.text);
if edit3.Text=»» then    application.MessageBox(PChar(введи курс evro»), «Ошибка», MB_OK);
d:=strtofloat(edit4.text);
if edit4.Text=»» then    application.MessageBox(PChar(введи курс dollar»), «Ошибка», MB_OK);
r:=strtofloat(edit1.text);
if edit1.Text=»» then application.MessageBox(PChar(введи количество рублей»), «Ошибка», MB_OK);
try
ke:=r/e;
kd:=r/d;
except on EZeroDivide do application.MessageBox(PChar(«Ââåäè êóðñ èí. âàëþòû-äåëåíèå íà íîëü+»), «Îøèáêà», MB_OK);
end;
edit2.text:=floattostr(ke);
edit5.text:=floattostr(kd);
end;


 
Smithson ©
 
(2004-03-30 18:42)
[1]

Что именно не получается-то? Телепатов нету


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:43)
[2]

в общем не выводит сообщение об ошибке…


 
panov ©
 
(2004-03-30 18:44)
[3]

>новичок_из_сыктывкара ©   (30.03.04 18:43) [2]

в общем не выводит сообщение об ошибке…

А что выводит?


 
имя
 
(2004-03-30 18:45)
[4]

if (Edit3.Text = «») then raise Exception.Create(«Введите курс Euro»);

P.S. А в чем ошибка-то?


 
Smithson ©
 
(2004-03-30 18:46)
[5]

У тебя в корне неверный подход. Если в строке не число (или строка пустая), то StrToFloat выдаст исключение. Поэтому после нее проверять строку на отсутсвие значения бессмысленно — это нужно делать до. Или не делать вовсе, а заключать каждый StrToFloat в try except и реагировать на ошибку тама.


 
PVOzerski ©
 
(2004-03-30 18:46)
[6]

>PChar(введи
апостроф Пушкин введет? И телепатия не требуется. На будущее: просьба писать внятно, программа не компилируется или работает, но не так


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:47)
[7]

надо что бы выводилась не виндосовское сообщение об ошибке а отлавливалась програмно, а она не отлавливается


 
PVOzerski ©
 
(2004-03-30 18:51)
[8]

>e:=strtofloat(edit3.text);
>if edit3.Text=»» then    application.MessageBox(PChar(введи курс >evro»), «Ошибка», MB_OK);
Дык надо же сначала проверять содержимое, а потом strtofloat


 
Smithson ©
 
(2004-03-30 18:51)
[9]

виндосовское сообщение об ошибке
Такового зверя здесь нет в принципе. Все сообщения об ошибках выдает твоя прогамма. Те ошибки, которые ТЫ не обработал, обработает код Borland`а и выдаст стандартное уведомление об ошибке. Не нравиться оно — обрабатывай ошибки сам :))

А windows, по-моему, только про Access Violation ругается сама, поскольку защита ресурсов — привелегия OC.


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:51)
[10]

всем спасибо огромное


 
имя
 
(2004-03-30 18:56)
[11]

1.
try
 E := StrToFloat(Edit3.Text);
except
 on Excp: Exception do // что-то сделать
end;

2.
if (Edit3.Text = "") then
begin
 ShowMessage("Введите курс Euro");
 Exit;
end;
E := StrToFloat(Edit3.Text);

3.
if (Edit3.Text = "") then raise Exception.Create("Введите курс Euro");
E := StrToFloat(Edit3.Text);

4….


 
новичок_из_сыктывкара ©
 
(2004-03-30 18:57)
[12]

:)


Если вы разрабатываете программу на Delphi, то вероятно, вам придется столкнуться с ситуацией, когда пользователь не заполнит обязательные поля формы приложения. В таком случае важно сообщить пользователю о необходимости заполнения этих полей.

Для проверки пустоты поля ввода (edit), в Delphi можно использовать следующий код:

if (Edit1.Text = '') then
ShowMessage('Введите значение для поля');

Этот код проверяет содержимое поля Edit1 и, если оно пустое, показывает сообщение с просьбой ввести значение для поля.

Также можно добавить проверку на пробелы и другие символы:

if Trim(Edit1.Text) = '' then
ShowMessage('Введите значение для поля');

Этот код удаляет пробелы в начале и конце строки и проверяет, что остаток строки не пустой.

Editing Databases in Delphi — Editing a current record

DELPHI Урок 3 Создание БД, добавление, удаление, изменение записей

Программирование в Delphi Урок 3 2 Работа с текстом, строковые функции Length, Pos и другие

Программирование в Delphi Урок 5. Массивы и циклы, цикл for, глобальные переменные. Array

[Новые уроки по Lazarus] №3 Компонент Label и Edit. Работа с полем ввода данных.

How to Synchronize or Align a BMW ECU DME to the EWS security system ISN

DELPHI Исправляем ошибки прошлого урока под номером 7 =)

Пример использования компонента KRIniConfig в Delphi

Уроки программирования в Lazarus. Урок №3. Работа с полем ввода, компонентом Edit

При изменении TEdit процедура автоматически начинает подсчёт суммы, и если очистить поле TEdit, то высвечивается ошибка » »is not a valid integer value «, можете подсказать, что можно сделать? Заранее благодарю за ответ.

  • delphi
  • edit

задан 16 дек 2020 в 22:09

Nickolai Bondarenko's user avatar

1

  • можно при подсчете суммы проверить, пустая ли строка. и если пустая то использовать при вычислениях 0, не вписывая в сам едит ничего

    16 дек 2020 в 22:33

1 ответ

Можно использовать функцию IntToStrDef, вместо IntToStr

ответ дан 17 дек 2020 в 8:50

Герман Борисов's user avatar

Герман БорисовГерман Борисов

10.3k14 серебряных знаков37 бронзовых знаков

  • Если 4 ошибки какая оценка будет 2 класс
  • Ес 2726 счетчик ошибка 004
  • Ему было впору биться об стенку речевая ошибка
  • Есиа ошибка при проверке данных
  • Ерш работа над ошибками