Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Условие? (Начинающий)   Найти похожие ветки 

 
Navigator_3000   (2003-03-23 12:52) [0]

Всем привет!
В книжке прочитал главу про IF..THEN.., решил сделать похожую програмку, но сам (не из книжки), сделал, но есть глюк если вводитьданные так чтобы условие выполнялось то всё нормально. Если наоборот то при нажатии кнопки показывает непонятный(ые) символы и чтобы получить корректный результат надо нажать несколько раз на кнопку. Думал я ошибся и повторил 1к1 программу из книжки, такаяже фигня. Проверял чуть не по символьно, может там ошибка.Помогите пожалуйста.
Заранее спасибо. Отрывок прилагается.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure summa;
var
cena:real;
kol:integer;
s:real;
mes:string[255];
begin
cena:=strtofloat(form1.Edit1.Text);
kol:=strtoint(form1.Edit2.Text);
s:=cena*kol;
if s>500 then
begin
s:=s*0.9;
mes:="Предоставляется скидка 10%"+#13;
end;
mes:=mes+"Стоимость покупки: "+floattostrF(s,ffFixed,4,2)+" руб.";
form1.label3.Caption:=mes;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
summa;
end;
end.

С Уважением Алексей!


 
SPeller ©   (2003-03-23 13:00) [1]

Исправь так:

s:=cena*kol;
if s>500 then
begin
s:=s*0.9;
end;
mes:="Предоставляется скидка 10%"+#13; mes:=mes+"Стоимость покупки: "+floattostrF(s,ffFixed,4,2)+" руб.";


 
Palladin ©   (2003-03-23 13:01) [2]

добавь в начало процедуры
mes:="";

я не уверен полностью что строка создается пустой в начале процедуры, а условие не всегда выполняется для ее корректной инициализации...


 
SPeller ©   (2003-03-23 13:02) [3]

упсс..... глюк написал.

Наверное надо так:

begin
cena:=strtofloat(form1.Edit1.Text);
kol:=strtoint(form1.Edit2.Text);
s:=cena*kol;
mes := "";
if s>500 then
begin
s:=s*0.9;
mes:="Предоставляется скидка 10%"+#13;
end;


 
Palladin ©   (2003-03-23 13:03) [4]


> SPeller © (23.03.03 13:00)

ага... мудро...
вдумался бы в смысл кода сначала...


 
Navigator_3000   (2003-03-23 13:18) [5]

Спасибо ребята!
Palladin-срабатывает но не всегда, но взял на заметку.
SPeller-срабатывает всегда, работал с первого ответа но вставил сразу после begin.


 
Intell ©   (2003-03-23 13:20) [6]

Ты забыл про оператор
End Else begin

Реализуй, как исключительную ситуацию. Если хочешь всё подробно о If ... Then и Else, то сообщи на мыло, отвечу на любые вопросы.

sergein@nojabrsk.ru


 
Palladin ©   (2003-03-23 13:22) [7]


> Navigator_3000 (23.03.03 13:18)

интересно...
а я тебе что посоветовал...


 
Palladin ©   (2003-03-23 13:24) [8]


> Intell © (23.03.03 13:20)

статью напиши про if then else
9 страниц минимум...


 
Palladin ©   (2003-03-23 13:25) [9]


> Реализуй, как исключительную ситуацию

:))


 
DrPass ©   (2003-03-23 13:25) [10]

Глобальные переменные всегда инициализируются пустыми значениями. Локальные - никогда. По умолчанию они инициализируются мусором.


 
Palladin ©   (2003-03-23 13:30) [11]

if mes=всякая лажа then raise Exception.Create("Что за белеберда");


 
Intell ©   (2003-03-23 13:31) [12]

DrPass - заумно, но верно


 
Anatoly Podgoretsky ©   (2003-03-23 13:41) [13]

DrPass © (23.03.03 13:25)
Intell © (23.03.03 13:31)

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




Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
4-6848
chudaks
2003-02-05 16:11
2003.04.03
Как заархивитровать из своей программы


14-6717
Leon Crom
2003-03-14 15:24
2003.04.03
спиртное... ( бухло кто не понял)


1-6531
ArtemkaBeginner
2003-03-21 00:06
2003.04.03
фигурный текст


1-6474
Лосось в сметане
2003-03-23 19:41
2003.04.03
<<< Проблемы интерфейса в Windows XP >>>


14-6707
michael_b
2003-03-15 17:56
2003.04.03
Кто решит СУПЕР задачу по алгебре?