Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];
ВнизСтолкнулся с проблемой в простой програмке.Помогите пожалуйста ! Найти похожие ветки
← →
Дмитрий (2009-04-05 23:40) [0]Привет форумчане! Я начинающий программист - новичек вообщем. Я решил разработать простенькую програмку "Сумма покупки" в качестве тренировки.
Коротко о программе:
Имеется два типа вещей например: куртки,джинсы. Вещь надо выбирать путем установки галочки в CheckBox.Каждой вещи надо задать кол-во и цену.Соответственно два поля Edit для каждой вещи.
В итоге надо вычислить сумму покупки только тех вещей напротив которых стоит галка в CheckBoxe.
Столкнулся с такой проблемой, когда вычисляется сумма, то считаются все вещи даже если с одного из CheckBoXов галка снята.
И если хоть один из 4х Edit не заполнен вылетает ошибка.
Вот мой код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox; //куртки
CheckBox2: TCheckBox; //джинсы
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel; //наименование товара -просто надпись
Label2: TLabel; //количество -просто надпись
Label3: TLabel; //цена -просто надпись
Label4: TLabel; //сумма -просто надпись
Label5: TLabel; //здесь выводится результат
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=False then
begin
Edit1.Hide;
Edit1.Enabled:=False;
Edit2.Hide;
Edit2.Enabled:=False;
end
else
begin
Edit1.Show;
Edit1.Enabled:=True;
Edit2.Show;
Edit2.Enabled:=True;
end
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if checkbox2.Checked=False then
begin
Edit3.Hide;
Edit3.Enabled:=False;
Edit4.Hide;
Edit4.Enabled:=False;
end
else
begin
Edit3.Show;
Edit3.Enabled:=True;
Edit4.Show;
Edit4.Enabled:=True;
end
end;
var
a,b:Integer;
a1,b1:Real;
sum:Real;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:= StrToInt (Form1.Edit1.Text);
b:= StrToInt (Form1.Edit3.Text);
a1:= StrToFloat (Form1.Edit2.Text);
b1:= StrToFloat (Form1.Edit4.Text);
sum:=(a*a1)+(b*b1);
Label5.Caption:=FloatToStr(sum);
end;
end.
Подскажите пожалуйста,что я не так делаю.
Заранее огромное спасибо.
← →
{RASkov} © (2009-04-06 00:07) [1]
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Edit1.Visible:=CheckBox1.Checked;
Edit2.Visible:=CheckBox1.Checked;
end
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
Edit3.Visible:=CheckBox2.Checked;
Edit4.Visible:=CheckBox2.Checked;
end
var
a,b:Integer;
a1,b1:Real;
sum:Real;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked then a:= StrToIntDef(Edit1.Text, 0) else a:=0;
if CheckBox2.Checked then b:= StrToIntDef (Edit3.Text, 0) else b:=0;
if CheckBox1.Checked then a1:= StrToFloatDef (Edit2.Text, 0) else a1:=0;
if CheckBox2.Checked then b1:= StrToFloatDef (Edit4.Text, 0) else b1:=0;
sum:=(a*a1)+(b*b1);
Label5.Caption:=FloatToStr(sum);
end;
> Подскажите пожалуйста,что я не так делаю
много чего... например сейчас скопируешь мой код не подумав над его оптимизацией и вообще он не правильный хоть и рабочий...
думать нужно :)
← →
{RASkov} © (2009-04-06 00:14) [2]> [0] Дмитрий (05.04.09 23:40)
> Столкнулся с такой проблемой, когда вычисляется сумма, то
> считаются все вещи даже если с одного из CheckBoXов галка
> снята.
> И если хоть один из 4х Edit не заполнен вылетает ошибка.
Ты прячешь Эдиты, причем предворительно еще их дисаблишь, и думаешь что программа, раз ты не видишь контролы, то и ей на них не обращать внимания... ошибаешься... Спрятанные контролы, пусть даже задисабленные, имеются в программе и участвуют в коде...
Но в виду того что у тебя идет преобразования текстовой информации в численную и в спрятанном контроле вместо числа введено незнай что(или пусто как ты говоришь) вот и ошибка при конвертировании....
← →
Дмитрий (2009-04-06 00:39) [3]Спасибо {RASkov}. Исправил код все работает.Буду теперь подробно разбиратся что да как. Просто я Delphi неделю назад впервые увидел,
а до этого вообще программированием не занимался.
Поэтому такие ламерские ошибки :(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c