Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.03.2014, 20:42
KPOLLIUDZE KPOLLIUDZE вне форума
Прохожий
 
Регистрация: 30.03.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
Сообщение Возникли вопросы при изучении Delphi

Доброго времени суток, Delphi занимаюсь совсем недавно до этого был только базовый курс basic, испытываю большие трудности в программировании, так что за кривизну кода простите.
проблема в том, что массив не хочет считаться с плавающей запятой, хотя и задан в Real, прошу помочь, будьте добры
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Edit9: TEdit;
    Label12: TLabel;
    Button1: TButton;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label13: TLabel;
    StringGrid1: TStringGrid;
    Edit10: TEdit;
    Label14: TLabel;
    Label18: TLabel;
    Edit11: TEdit;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;

var  Qor, Qimr, H, x, y, R, t0, Qhr, Qe, Qh, Qh1, q, q1, B, C, Qbr, Knom: Real;
k : array[1..24] of real;
i: integer;
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
for i:= 1 to 24 do
if Length(StringGrid1.Cells[i, 0]) <>0
then k[i] := StrToInt(StringGrid1.Cells[i,0])
else k[i] := 0;
Qor := StrTOFloat(Edit1.Text);
Qimr := StrTOFloat(Edit2.Text);
H := StrTOFloat(Edit3.Text);
x := StrTOFloat(Edit4.Text);
y := StrTOFloat(Edit5.Text);
R := StrTOFloat(Edit6.Text);
t0 := StrTOFloat(Edit7.Text);
Qhr := StrTOFloat(Edit8.Text);
Qe := StrTOFloat(Edit9.Text);
Qbr := StrTOFloat(Edit10.Text);
Knom := StrTOFloat(Edit11.Text);
if (RadioButton1.Checked=True) then
begin
for i:=1 to 24 do
Qh := Qe+Qor*((1+R*Exp(2*ln(k[i])))/(1+R))+H*exp(y*ln(k[i]));
Qh1 := Qe+Qor*((1+R*Exp(2*ln(k[i])))/(1+R));
Label13.Caption:=FloatToStr(Qh1);
Label17.Caption:=FloatToStr(Qh);
end;
if (RadioButton2.Checked=True) then
begin
for i:=1 to 24 do
Qh :=Qe+Qhr*((1+R*Exp(2*ln(k[i])))/(1+R))+2*(Qimr-36)*Exp(y*ln(k[i]))+H*Exp(y*ln(k[i]));
Qh1 :=Qe+Qhr*((1+R*Exp(2*ln(k[i])))/(1+R))+2*(Qimr-36)*Exp(y*ln(k[i]));
Label13.Caption:=FloatToStr(Qh1);
Label17.Caption:=FloatToStr(Qh);
end;
if (RadioButton3.Checked=True) then
begin
for i:=1 to 24 do
Qh :=Qe+Qhr*((1+R*Exp(2*ln(k[i])))/(1+R))+2*(Qimr-36)*Exp(y*ln(k[i]))+H*Exp(y*ln(k[i]));
q :=Qh+0.15*(Qh-Qhr);
Qh1 :=Qe+Qhr*((1+R*Exp(2*ln(k[i])))/(1+R))+2*(Qimr-36)*Exp(y*ln(k[i]));
q1 :=Qh1+0.15*(Qh1-Qhr);
Label13.Caption:=FloatToStr(q1);
Label17.Caption:=FloatToStr(q);
end;
end;
end.
Ответить с цитированием
  #2  
Старый 30.03.2014, 21:32
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

1) Это не код, это какой-то треш. Оформлять код надо вменяемо! Уж после бейсика-то можно к этому привыкнуть. Оформление кода - единственное, чему бейсик хоть чуть-чуть приучает.
2) Сразу вижу отсутствие операторных скобок. Или неверное их проставление.
3) Объясни нормально, что значит "не хочет считаться".
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
KPOLLIUDZE (31.03.2014)
  #3  
Старый 31.03.2014, 12:49
KPOLLIUDZE KPOLLIUDZE вне форума
Прохожий
 
Регистрация: 30.03.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

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

Последний раз редактировалось KPOLLIUDZE, 31.03.2014 в 12:53.
Ответить с цитированием
  #4  
Старый 31.03.2014, 12:52
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от KPOLLIUDZE
"не хочет считаться" имеется ввиду - нормально компелирует, но при введении цифр с запятой выдает ошибку, что не может проводить расчеты с цифрами такого типа
А в разделителе дробной и целой части не перепутал запятую с точкой?
Ответить с цитированием
  #5  
Старый 31.03.2014, 12:54
KPOLLIUDZE KPOLLIUDZE вне форума
Прохожий
 
Регистрация: 30.03.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

и так, и так пробовал, результат один - ошибка
Ответить с цитированием
  #6  
Старый 31.03.2014, 13:01
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от KPOLLIUDZE
и так, и так пробовал, результат один - ошибка
В качестве разделителя целой и дробной части нужно использовать только тот, что настроен в Windows-е (в Языках и региональных стандартах).
На каком числе и в каком месте выдаёт ошибку?
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
KPOLLIUDZE (31.03.2014)
  #7  
Старый 31.03.2014, 13:12
KPOLLIUDZE KPOLLIUDZE вне форума
Прохожий
 
Регистрация: 30.03.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

на первом же числе где есть разделение
Ответить с цитированием
  #8  
Старый 31.03.2014, 13:18
KPOLLIUDZE KPOLLIUDZE вне форума
Прохожий
 
Регистрация: 30.03.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

вот что я обычно вижу
Ответить с цитированием
  #9  
Старый 31.03.2014, 13:20
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от KPOLLIUDZE
вот что я обычно вижу
Я здесь вижу точку в качестве разделителя целой и дробной части. В русском региональном стандарте используется запятая.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
KPOLLIUDZE (22.05.2014)
  #10  
Старый 31.03.2014, 14:35
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Кстати, ещё и в циклах крутится лишь одна строчка, а по коду видно что должны две - не хватает конструкций begin...end;
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
KPOLLIUDZE (22.05.2014)
  #11  
Старый 31.03.2014, 14:45
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Alegun
Кстати, ещё и в циклах крутится лишь одна строчка, а по коду видно что должны две - не хватает конструкций begin...end;
Кстати да, по логике вещей во втором и третьем цикле должно захватываться две строки, а в четвёртом цикле даже четыре строки вместо одной.
Но пока ТС что-то затих...
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
KPOLLIUDZE (22.05.2014)
  #12  
Старый 31.03.2014, 17:16
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

А это случайно не "Пахом Поехавший" перерегался?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
KPOLLIUDZE (22.05.2014)
  #13  
Старый 22.05.2014, 19:59
KPOLLIUDZE KPOLLIUDZE вне форума
Прохожий
 
Регистрация: 30.03.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

прошу прощения, что не поблагодарил сразу, кое что поправил, работает, но не думаю, что код стал менее кривым) СПАСИБО!
хотя кроме благодарности есть небольшой вопрос, вот этот код крутится в цикле и выводит в столбец несколько цифр
Код:
if Qh>Qo then begin
Label7.Caption:=Label7.Caption+#10+'!'+FloatToStrF(Qh, ffFixed,5,3)+' '+'при K='+FloatToStr(k[i]);
Label7.Font.Color := clRed;
end else begin
Label7.Caption:=Label7.Caption+#10+FloatToStrF(Qh, ffFixed,5,3);
Label7.Font.Color := clGreen;
end;
я наивно полагал, что они будут менять цвет по одной, но весь столбец принимает цвет в зависимости от последнего числа, можно ли это как то поправить?
Ответить с цитированием
  #14  
Старый 23.05.2014, 00:52
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Нельзя. Компонент Label - одноцветный. Если хочется красоты, например как на данном форуме, нужно использовать подходящие компоненты. TLabel для этого точно не подходит.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
KPOLLIUDZE (23.05.2014)
  #15  
Старый 23.05.2014, 01:00
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
TLabel для этого точно не подходит.
Взять какой-нибудь RichEdit/RichView, к примеру.
Или сделать кучу динамически создаваемых Label'ов.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
KPOLLIUDZE (23.05.2014)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter