Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2007, 22:19   #1
Maugli-rus
 
Регистрация: 23.12.2007
Сообщений: 3
По умолчанию Ошибка в переменных

Посмотрите код:

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
const
m=15;
c=15;
Var
 { m: integer; }
  i1:integer;
  i2:integer;
  j:integer;



  type
  TForm2 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Button1: TButton;
    Edit9: TEdit;
    Label10: TLabel;
    Button2: TButton;
    Label11: TLabel;
    Button3: TButton;
    Button4: TButton;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  end;



 type TProduct=class
  public
   Name: string [15];
   ZatrEdProd : real;
   PriseEdProd : real;
   V_Prod : array[0..m] of real;
   A_Prod : array[0..m+1] of real;
   procedure PutV_Prod(i: integer);
   procedure PutA_Prod(i: integer);
  end;

  Tpredpr=class
   RezFin: real;
   Kredit: real;
   ZatrPost: real;
   betta: real;
   product:array[1..c] of Tproduct;
   procedure PutRezFin;
   procedure putKredit;
   procedure putZatrPost;
   procedure putbetta;
  end;

var
  Form2: TForm2;
  predpr: Tpredpr;

implementation

{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
   i1:=1; i2:=1;j:=1;
   Label9.Caption:='Период n-'+IntToStr(i1);
   Label11.Caption:='Период n-'+IntToStr(i2-1);
end;

procedure Tpredpr.PutRezFin;
begin
    RezFin:=StrToFloat(form2.edit1.text);
end;

procedure Tpredpr.putKredit;
begin
    Kredit:=StrToFloat(form2.edit2.Text);
end;

procedure Tpredpr.putZatrPost;
begin
    ZatrPost:=StrToFloat(form2.edit3.Text);
end;

procedure Tpredpr.putbetta;
begin
    betta:=StrToFloat(form2.edit4.Text);
end;

procedure Tproduct.PutV_Prod(i: integer);
begin
    V_Prod[i]:=StrToFloat(form2.Edit8.Text);
end;

procedure Tproduct.PutA_Prod(i: integer);
begin
    A_Prod[i]:=StrToFloat(form2.Edit9.Text);
end;


procedure TForm2.Button1Click(Sender: TObject);
begin
     predpr.product[j].PutV_Prod(i1);
    i1:=i1+1;
    Edit8.Text:='';

end;

end.


При выполнении procedure TForm2.Button1Click(Sender: TObject); выдаеться ошибка
Progect Labolatory.exe raised exception class EAceaaViolation with messafe 'Acess violation at address 00451406 in module 'Labolatory.exe'. Read of address 00000024. Process stopped.use step or Run to continue.'


Пожалуйста помогите
Maugli-rus вне форума Ответить с цитированием
Старый 23.12.2007, 23:22   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1.
Цитата:
i1:=1
зачем тогда объявляли массив с нуля ?
Цитата:
type TProduct=class
не лучший метод создавать корневой класс, так как в нем будут отсутствовать конструкторы и деструкторы, которые у вас вдобавок и не определены и не вызываются.
Прежде чем писать свой клас берем учебник по ООП и штудируем.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 24.12.2007, 07:44   #3
Dunpeal
Пользователь
 
Регистрация: 16.11.2006
Сообщений: 28
По умолчанию

Проверь, может у тебя выходит за границы массива product или V_Prod.
Массив V_Prod определён с 0 (т.е. 16 элементов в массиве), а запись начинается с 1 элемента, при i1=16 произойдёт выход за пределы масссива.
Dunpeal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Много переменных Altera Общие вопросы Delphi 15 18.07.2008 08:06
Вальс переменных Иллидан Общие вопросы Delphi 9 27.01.2008 10:39
Замена переменных NoName_emaNoN Win Api 4 18.01.2008 09:05
список переменных krasivosleva Microsoft Office Excel 2 26.11.2007 19:32
Проверка переменных *_ViruS_* Общие вопросы C/C++ 3 21.09.2007 21:33