Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
3-6293
Visp
2003-03-13 11:17
2003.04.03
Доступ к Индексам Clipper из делфи


14-6751
Anatoly Podgoretsky
2003-03-16 07:57
2003.04.03
Именинники 16 марта


3-6297
Jurij
2003-03-16 16:06
2003.04.03
SQL запрос


1-6441
lexa
2003-03-23 22:01
2003.04.03
Как создать ссылку в тексте


3-6349
Олег С.
2003-03-12 16:53
2003.04.03
Сортировка по возрастанию и по убыванию...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский