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

Вниз

Помогите не поиму почему у меня из-за if не работает код   Найти похожие ветки 

 
Till   (2003-04-25 13:17) [0]

Здраствуйте помогите поалуйста!
Я дописал свою программу она у меня по введенным данным создает табличк ув СтрингГриде с данными теперь мне надо ее улучшить т.е. проверить.
Условие:
Если данные из второй колонки последнеий строки минус данные из третей колонки последней строки меньше нуля то во вторую колонку последнию строку запихзнуть то то иначе другое

procedure TMainForm.BitBtn1Click(Sender: TObject);
var
m, s, p, m_schet, ost, nach, proc, p1, ls, ls1 : real;
sr, i, j, t, m_back : integer;
t_1, s_d, s_p, LastString, LastString_2 : String;
begin
try
i := 0;
j := 0;
t := 0;
s := summa.value; //Сумма кредита
m := summa_e.value; //Сумма ежемесячного погашения
p := procent.value; //Процентная ставка
sr := srok.Value; //Срок кредита в месяцах
StringGrid.RowCount := sr; // Количество строк с СтрингГриде равняеться количеству месяцев
StringGrid.Cells[1,0] := "Сумма основ. долга";
StringGrid.Cells[2,0] := "Пог-е в месяц";
StringGrid.Cells[3,0] := "Остаток долга";
StringGrid.Cells[4,0] := "% ставка";
StringGrid.Cells[5,0] := "Начисленные %";

for i := 1 to sr do
begin
StringGrid.Cells[1,1] := FloatToStr(s); //Присваеваем ежемесячную сумму погашения ячейкам
for t := 2 to sr do
begin
m_back := t-1; // Значение т - одна ячейка в стринг грид
t_1 := StringGrid.Cells[1,m_back]; // Присваемваем переменно значение, (содержание прошлой ячейки)
m_schet := StrToFloat(t_1) - m; // Считаем сколько нужно выплатитт в месяце
StringGrid.Cells[1,t] := FloatToStr(m_schet); //Присваем текущей ячейке значение :)
end;

StringGrid.Cells[4,i] := FloatToStr(p) + " %";
StringGrid.Cells[0,i] := FloatToStr(i) + " месяц";


StringGrid.Cells[2,i] := FloatToStr(m); //Сумма ежемесячного погашения

s_d := StringGrid.Cells[1,i]; // Сумма основного долга, берем из СтрингГрида
s_p := StringGrid.Cells[2,i]; // Сумма сколько погасили
ost := StrToFloat(s_d) - StrToFloat(s_p); // Арифметика
StringGrid.Cells[3,i] := FloatToStr(ost); // Остаток долга

LastString := StringGrid.Cells[1, StringGrid.RowCount - 1];
LastString_2 := StringGrid.Cells[2, StringGrid.RowCount - 1];
ls := StrToFloat(LastString);
ls1 := StrToFloat(LastString_2);
{
if (ls-ls1) < 0 then
//Считаем какую сумму нужно тогда ставить
else
//Иначе ставим ту которая была }

p1 := (ost / 100)*p;
proc := (ost * p1)/12;
StringGrid.Cells[5,i] := FloatToStr(proc);
end;

except //Если ошибка выводим сообщения :))
ShowMessage("Программа не может обработать данные которые Вы ввели! Проверьте все введенные Вами данные, если все правильно но программа не работает сяжитесь с разработчиком данного программного обеспечения!");
end;
end;


Без этого {
if (ls-ls1) < 0 then
//Считаем какую сумму нужно тогда ставить
else
//Иначе ставим ту которая была }

что у меня в коде закомментированно все работает! Но без этой проверки а вот када оразкомментирую его не работае программа запускаеться но когда жмешь на кнопке она вылетает :(( На Applicatiion Run на последнем end;
Вот..... ставил точки отладки не смог разобраться помогите пожалуйста МАСТЕРА!
Заранее всем благодарен!


 
Palladin   (2003-04-25 13:25) [1]

добавь после else символ ";"
и разкоментируй


 
Till   (2003-04-25 13:57) [2]

Все равно вылетает :((((
вот тута
begin
Application.Initialize;
Application.Title := "Расчет суммы ежемесячного погашения по кредиту";
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.

На последний ЭНД ставит синюю строчку :(((


 
Palladin   (2003-04-25 14:08) [3]

у тебя вместо


//Иначе ставим ту которая была


код или просто эта строка?


 
KSergey   (2003-04-25 14:29) [4]

Присоединяясь к Palladin © (25.04.03 14:08): приведите полный код! Или то, что приведено выше - и есть полный код?
А вообще - встать на первую строку метода BitBtn1Click (поставить точку останова) - и посмотреть в отладчике по шагам - где происходит вылет.


 
Till   (2003-04-25 14:59) [5]

Это весь код, я тама хотел сделать если например меньше ноля то ячейка такая то содержит то то , вот решил простодаже на if сделаеть все равно слетает :(( Это полный код длЯ кнопки.


 
KSergey   (2003-04-25 15:42) [6]

Все же надо в отладчике глядеть: попадаем ли вообще в этот код, если попадаем - где происходит исключение. Гадать тут можно много.
И еще. А если запустить эту приблуду все IDE - возникает сообщение ""Программа не..." или нет?
Если возникает - тогда вообще все нормально, т.е. ошибка как надо отловилась, а дальше - как и написано к раработчику ;)
А вот если не возникает, но в отладчике проверено, что в этот код вообще-то попадаем - тогда это что-то и вовсе странное... А вот если не возникает это сообщени (все IDE)и в отладчике на этот код (его начало) вообще не попадаем - ну тогда и грабли не здесь надо искать.


 
KSergey   (2003-04-25 15:43) [7]

(под сообщением я понимал сообщение, выводящееся в программе по ShowMessage при "обработке" исключения)



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

Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-23091
Black
2003-04-26 13:35
2003.05.08
Мой компьютер в OpenDialog1


1-23151
usman_rv
2003-04-24 11:39
2003.05.08
OLE експорт в Excel .сбой при больших обьемах


14-23343
Vertx
2003-04-20 13:23
2003.05.08
Компонент отчетов


14-23366
NiBL'S
2003-04-21 11:29
2003.05.08
FibPlus


8-23239
Andrei
2003-01-31 12:30
2003.05.08
Мултимедия





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский