Главная страница
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.017 c
14-6731
Anatoly Podgoretsky
2003-03-15 01:32
2003.04.03
Именинники 15 марта


14-6723
vic_774N
2003-03-16 10:01
2003.04.03
Стоит ли трудиться ? ( Написание отладчика )


3-6407
Kent1
2003-03-16 01:24
2003.04.03
связать таблицы через КомбоБоксы


3-6302
Инна
2003-03-17 10:15
2003.04.03
ADOTable и ADOQuery


8-6625
_ncux_
2002-12-27 14:23
2003.04.03
GLUT не работает под Delphi 6