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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2008, 13:54   #1
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

У меня какая то непонятная ошибка с калькулятором...не работает деление...выводить какие то умопомрачающие ответы даже не простые выражения... в чем проблема?

Код:
var
  Form1: TForm1;
  znak: char;
  a, b : integer;
  otvet: extended ;

....
if ((znak= '/') and (b= 0)) then showmessage('На 0 нельзя делить');
If ((znak= ' /') and (b <> 0)) then otvet:= a/b;
....
По ходу вопрос все о том же(если примеры я смотрел там нету)...как ограничить кол-во символов которые можно вводить в edit? Например можно ввести 9 символов...какое свойство отвечает за это? Или как сделать это программно?
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.

Последний раз редактировалось Stilet; 29.07.2008 в 14:47.
MAKEDON вне форума Ответить с цитированием
Старый 29.07.2008, 14:31   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
как ограничить кол-во символов которые можно вводить в edit?
Свойство MaxLength компонента TEdit.
О проблеме деления ничего сказать не могу, т.к. приведенного куска кода не достаточно. Выложите всею программу (в виде прикрепленного файла к сообщению).
Arigato вне форума Ответить с цитированием
Старый 29.07.2008, 14:43   #3
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Вот исходник...одна проблема есть ли у тебя компонент AlphaSkin? Если нету то будут проблемы при запуске программы из делфи...если найти можно в нете найти или могу кинуть ссылку...
Вложения
Тип файла: rar v 1.0(не работает деление).rar (432.9 Кб, 21 просмотров)
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 29.07.2008, 14:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну начнем с того что znak у тебя char
а в сравнении учавствует целая строка:
Цитата:
If ((znak= ' /')
Усек?

А потом АльфаСкин тут явно ни при чем...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2008, 14:50   #5
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Свойство MaxLength компонента TEdit.
Не получается...кол-во символов все равно не ограничено...может потому что ввод осуществляется с помощью баттонов?
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 29.07.2008, 14:51   #6
scorpio2505
 
Регистрация: 15.03.2008
Сообщений: 5
По умолчанию

сделай тип ответа real
Помощь в написание программ на Pascal, Delphi, C++
icq:273869049
scorpio2505 вне форума Ответить с цитированием
Старый 29.07.2008, 14:54   #7
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну начнем с того что znak у тебя char
а в сравнении учавствует целая строка:

Усек?
А что делать?

Ладно так может долго продолжаться....Можете провести в моем исходнике изменения(деление не ворк и ограничить кол-во символов в едите 9-ю) и кинуть мне....сам определю что было не так...Заранее спс!
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.

Последний раз редактировалось Stilet; 29.07.2008 в 15:00.
MAKEDON вне форума Ответить с цитированием
Старый 29.07.2008, 15:01   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Не получается...кол-во символов все равно не ограничено...может потому что ввод осуществляется с помощью баттонов?
Ну конечно так не получится. В этом случае нужно руками длину проверять:
Код:
if Length (Edit1.Text) < 9 then Edit1.Text := Edit1.Text + ...
Цитата:
А что делать?
Убрать пробел в кавычках перед знаком /

P.S. scorpio2505
Real имеет меньшую точность, чем Extended, так что Extended лучше.

А вот почему у MAKEDON в программе a и b имеют тип Integer, а otvet вещественный?
Сделайте все 3 переменных одного типа.

Последний раз редактировалось Arigato; 29.07.2008 в 15:15.
Arigato вне форума Ответить с цитированием
Старый 29.07.2008, 15:07   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
MAKEDON
Значит не усек.
Ладно попробуем нахрапом, копипасти это:
Код:
If ((znak= '/') and (b <> 0)) then otvet:= a/b;
Усек?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2008, 18:26   #10
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

1) Когда пишешь программы, оформляй код нормально. (используй табуляцию. Правила хорошо тона).
2) Пиши коментарии, тебе будет удобнее, когда код будет очень большой.
3) Отличие кнопки "С" и кнопки "снова", мало заметны (ну я не долго смотрел ). Может и ошибаюсь.
4) Исправь:
Код:
var znak: string;
     a, b, otvet: real;  //можешь воспользоваться советом выше ;) 

procedure TForm1.sButton18Click(Sender: TObject);
begin
  b := StrToFloat(sEdit1.text);
  case znak[1] of   
    '+': otvet:= a + b;
    '-': otvet:= a - b;
    '*': otvet:= a * b;
    '/': If  (b<>0) then otvet:= a/b;
  end;
//тут дальше твоё продолжение// 
end;
5) Чтобы запретить пользователю вводить значение с клавиатуры может стоит воспользоваться свойством у едит ReadOnly?
Код:
 Edit1.ReadOnly:=Trye; //нельзя редактировать
 Edit1.ReadOnly:=False; //можно)
P.S.: в коде у тебя столько лишнего

Последний раз редактировалось dr.Chas; 29.07.2008 в 21:21.
dr.Chas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с калькулятором (делфи) diznt Помощь студентам 6 26.11.2010 16:40
Проблема з калькулятором carbon383 Помощь студентам 22 02.11.2008 11:49
Проблемы с WIN+D Altera Общие вопросы Delphi 4 15.08.2008 15:55
Проблемы с DLL Дмитрий2006 Общие вопросы C/C++ 5 15.10.2007 12:43
Проблемы с FPC Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 1 10.07.2007 17:09