Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 02:40   #1
voverrr
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 62
По умолчанию ошибка Edit при очистке значения Backspace-ом

Всё просто.
На форме окошко Edit и Label. Задача - от высоты вводимого в Edit2 проёма высчитать высоту двери(выс проёма-51=выс двери).

Сначала оно капризничало при клике на Едит2. Излечил.
Код:
procedure TForm1.medt2Click(Sender: TObject);

begin
  medt2.Text:=IntToStr(0);
end;
Теперь при клике буквы в Едит2 превращаются в ноль. Но если этот ноль удалить делитом или бэкспейсом - выдаёт ошибку. Т.е. - получается нельзя, чтобы в окошке Едит2 не было никакого значения.

Вот такой кусок кода:

Код:
procedure TForm1.medt2Click(Sender: TObject);// этот кусок я привёл выше

begin
  medt2.Text:=IntToStr(0);
end;

procedure TForm1.medt2change(Sender: TObject);
var vproem, vdveri: Integer;

begin
  vproem:=strtoint(medt2.Text);
  vdveri:=vproem-51;                                        // переменную vdveri наверное можно и не вычислять отдельно, а подставить в следующую строку выражение?
  lbl5.Caption:='высота двереи='+ inttostr(vdveri);// при вводе чисел эти вычисления работают как надо
end;

Последний раз редактировалось voverrr; 07.02.2011 в 02:48.
voverrr вне форума Ответить с цитированием
Старый 07.02.2011, 03:29   #2
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

Код:
procedure TForm1.medt2Click(Sender: TObject);// этот кусок я привёл выше

begin
  medt2.Text:=IntToStr(0);
end;

procedure TForm1.medt2change(Sender: TObject);
var vproem, vdveri: Integer;

begin
try
  vproem:=strtoint(medt2.Text);
  vdveri:=vproem-51;                                        // переменную vdveri наверное можно и не вычислять отдельно, а подставить в следующую строку выражение?
  lbl5.Caption:='высота двереи='+ inttostr(vdveri);// при вводе чисел эти вычисления работают как надо
except

end;

end;
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 07.02.2011, 03:42   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

если medt2 ето Edit2, то его значение пустым и буквои быть не может потому что во время редактирования то что в нем, ничего), переводит в число vproem:=strtoint(medt2.Text); надо поставить условие типа
Код:
if medt2.Text in 0..9 then
  vproem:=strtoint(medt2.Text);
мое условие образно, не помню как правелно записать
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 07.02.2011, 03:51   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

if (medt2.Text>=low(a))and(medt2.Text< =high(a)) then
попробуите так, код не мои, но кажеца ет условие если там не буквы
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 07.02.2011, 03:57   #5
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

ArtGrek ошибка не когда он переводит
Цитата:
vproem:=strtoint(medt2.Text);
а когда он хочет присвоить.
Код:
vproem:=strtoint(medt2.Text);
можно исключением как я написал выше либо как предложил ArtGrek проверять
Код:
if Length(medt2.Text)>0 then
begin
  vproem:=strtoint(medt2.Text);
  vdveri:=vproem-51;                                        // переменную vdveri наверное можно и не вычислять отдельно, а подставить в следующую строку выражение?
  lbl5.Caption:='высота двереи='+ inttostr(vdveri);// при вводе чисел эти вычисления работают как надо
end else 
medt2.Text:=IntToStr(0);
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 07.02.2011, 04:04   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Volt
а когда он хочет присвоить.
сперва происходит перевод гдето в модуле StrToInt, Result(integer) := Edit.Tekst, а потом присваиваеца, ошибка,
если ее нет, потом уже присваивание vproem:= Result;
но даже если и не так, мы говорим об однои и тои же строке
просто разными словами)
Цитата:
можно исключением как я написал выше либо как предложил ArtGrek проверять
надо проверять и как ты говориш и как я, что в обоих слушаях не было ошибки
VirusN13

Последний раз редактировалось ArtGrek; 07.02.2011 в 04:10.
ArtGrek вне форума Ответить с цитированием
Старый 07.02.2011, 22:03   #7
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Есть такая функция - TryStrToInt()...
asmodey1 вне форума Ответить с цитированием
Старый 08.02.2011, 00:52   #8
voverrr
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 62
По умолчанию

во понаписали-то! Весь день сегодня кружился, даже отписаться некогда было, только добрался до кода.

Код:
if Length(medt2.Text)>0 then
begin
  vproem:=strtoint(medt2.Text);
  vdveri:=vproem-51;                                        // переменную vdveri наверное можно и не вычислять отдельно, а подставить в следующую строку выражение?
  lbl5.Caption:='высота дверей='+ inttostr(vdveri);// при вводе чисел эти вычисления работают как надо
end else 
medt2.Text:=IntToStr(0);
во. этот кусок прокатил.Если очищать строку - в ней остаётся ноль, который никуда не удаляется, но потом, при вводе цифр его можно убрать. Мне каж этого будет не сильно трудно в пользовании.
Спасибо))

Подскажите ещё вот что: я заметил, что названия элементов у меня в дельфи немного отличаются от названий во всяких там уроках
cbb1 ->Combobox1
medt2 - >Edit2
Il1-> Imagelist1
это у меня какой-то диалект или где-то в настройках что-то включить надо?

Последний раз редактировалось voverrr; 08.02.2011 в 00:55.
voverrr вне форума Ответить с цитированием
Старый 08.02.2011, 01:13   #9
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

А у вас они по умолчанию так называюца?

Length(medt2.Text)>0 ето проверка на то что поле едит не пустое, если ввести букву, ОШИБКА
VirusN13

Последний раз редактировалось ArtGrek; 08.02.2011 в 01:17.
ArtGrek вне форума Ответить с цитированием
Старый 08.02.2011, 01:37   #10
voverrr
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 62
По умолчанию

угу, по умолчанию.
хм, буквы-то туда я писать не догадался))
попробую сам дописать проверку на "строковость" вводимого значения.
voverrr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
потоки; ошибка инди; значения for в edit gamer123 Общие вопросы Delphi 3 09.08.2010 13:58
Ошибка при наведении фокуса на Edit Gumer Общие вопросы Delphi 2 21.04.2010 00:13
при присвоении ADOQuery.SQL.Text значения DBLookupComboBox.KeyValue возникает ошибка namazi74 БД в Delphi 1 10.04.2010 07:20
Ошибка при очистке динамического массива. S_Yevgeniy Помощь студентам 4 24.12.2009 18:45
При помощи чего можно разбить значения в Edit IgoROCK Помощь студентам 5 22.12.2008 21:50