Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
1

Что за ошибка?

16.12.2009, 19:27. Показов 2595. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток. Столкнулся вот с такой проблемой: на форме лежит MaskEdit, использую для добавления записи в БД. Когда вводишь полностью все число, т.е. 0,11, полнстью прописывая каждую цыфру все работает, но когда например начинаю вводить - 1 - появляется продолжение в виде 1,00 - допустим меня это устраивает, нажимаю - Добавить вылазиет такая ошибка :

Что не так? и как с этим бороться?
Миниатюры
Что за ошибка?  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2009, 19:27
Ответы с готовыми решениями:

Подскажите, что не правильно: компилятор пишет, что ошибка есть
Подскажите, что не правильно: компилятор пишет, что ошибка естьprogram name; var...

Что это за ошибка, когда маткад не понимает, что такое у
Помогите плиз не понимаю что за ошибка маткад не понимает что такое у

Что такое перегрузка оператора? Что у меня в коде за ошибка?
Что же я написал?? Что оно не компилится? Что значит error C2275: Superclass: недопустимое...

Ошибка компилятора. Что сделать, что бы среда работала?
http://i064.***********/1210/33/00be8b0c26e9t.jpg Что сделать что бы среда работала нормально?

30
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
17.12.2009, 12:06  [ТС] 21
Author24 — интернет-сервис помощи студентам
Lord_Voodoo, работает )) - но вытекла новая проблема, не удаляет "," при нажати бэкспейс...
0
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
17.12.2009, 12:29 22
и не удалит. получение фокуса- автоматическое проставление символа
0
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
17.12.2009, 12:31  [ТС] 23
... как быть тогда?
0
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
17.12.2009, 12:34 24
при потере фокуса выставлять после 1 символа знак

Добавлено через 1 минуту
в этом случае нужно сделать проверку на ввод только цифр и при потере фокуса проставить ',' после 1 символа
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
17.12.2009, 12:57 25
DenProx, ты мой код смотрел? я проверял, после выставления запятой после первой цифры курсор попадает в конец строки
1
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.12.2009, 13:21 26
Lord_Voodoo, ему нужно, чтобы он смог потом удалить её(запятую), а так как все это дело прописанно в OnChange то это просто невозможно.
DenProx, чтобы сделать то что Вам нужно действуйте через коды клавиш, тогда у Вас будет работать все как надо. А потеря фокуса, как я понимаю Вам не подойдет...

Добавлено через 10 минут
Вот то, что нужно в крайнем случае подгоните под себя. Тут будет ставиться запятая автоматически после 1 цифры
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key in ['0'..'9']) and (Length(Edit1.Text)=1) then
  begin
    Edit1.Text:=Edit1.Text+',';
    Edit1.SelStart:=Length(Edit1.Text)
  end;
end;
1
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
17.12.2009, 13:43  [ТС] 27
ради такой безедлушки столько сделать ..... что-то мне подсказывает, что должен быть более простой способ...

Если посмотреть на проблему несколько иначе... нужно чтобы Едит знал что может быть введено только 4 символа, где 2-й это ","... и чтобы при встрече "," курсор ее обходил...?

Добавлено через 3 минуты
Inadequate, Ну в принципе - так тоже пойдет... Спасибо! ))

Добавлено через 8 минут
Еще такой вопрос, на счет отображения.... когда я присваиваю этому эдиту значение другой переменной типа Float , отображается длиное число типа - 1,11030944648675,
делал вывод через - FloatToStrF([переменная],ffFixed,2,2), тогда идет округление, например должно быть 1,11 а выводит 1,10 ... как это можно исправить?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.12.2009, 14:04 28
DenProx, зачем так делать? "Обрежте" строку и переведите её в вещественный тип. Данная функция(FloatToStrF) насколько я помню будет округлять постоянно. Так что лучше сделать как я написал. Вот пример как "порезать" строку.
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
s:=Edit1.Text;
SetLength(s,4);
ShowMessage(s);
end;
1
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
17.12.2009, 15:38  [ТС] 29
Inadequate, отлично! Спасибо Большущее!

Добавлено через 20 минут
Inadequate, Сейчас сойду с ума.... число 0,01 отображается как 0,00....
если увеличить SetLength(s,4); как SetLength(s,5); отображается 0,009.....
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.12.2009, 15:51 30
DenProx, не это Вы уж разберитесь с Вашей дельфёй. Такого быть не может... Я сейчас проверил всё нормально работает. Тут два варианта: либо Вы где-то помимо этого кода накосячили, либо дельфи кривая.
0
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
17.12.2009, 19:08  [ТС] 31
Inadequate, а в каких слкчаях такое возможно... Например в базе? (Access)

Добавлено через 2 часа 29 минут
Нашел наконец то ошибку ! ))) Все дело, как я и думал оказалось в БД...

Последний вопрос: как запретить вводить символы, для Едита, который работает только с цыфрами... и наоборот ?

Добавлено через 38 минут
Уже разобрался )) Всем спасибо! ))
0
17.12.2009, 19:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2009, 19:08
Помогаю со студенческими работами здесь

Ошибка 678:удаленный компьютер не отвечает.что это?что нужно сделать чтобы работало?
ЧТО ЭТО?КАК С ЭТИМ БОРОТЬСЯ?

Ошибка MEM.ALL ERR: hMem08 - что это за ошибка?
В моём проекте спустя часа 2-3 появляется вылазит ошибка вида: MEM.ALL ERR: hMem08 = 7AB7608,...

Коллеги!В чем ошибка понятие не имею, что-то упускаю, но не знаю что. Кто-то гвоорил делать через счетчик, только
Вивести числа следующим образом: 25 25.5 24.8 26 26.5 25.8 …...

Доработка программы, нужно что бы после того как юзер введет вместо числа что то другое вылезала ошибка
#include <stdio.h> #include <windows.h> int main(void) { SetConsoleOutputCP(1251); ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru