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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2009, 00:13   #11
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

ВСЁ.... проблема решена.... у меня был массив
koor : array[1..26] of TPoint;

а я пытался сделать так:

Код:
for i:=1 to 27 do
    begin
     koor[i].x:=F.ReadInteger(intToStr(i),'X',0);
     koor[i].y:=F.ReadInteger(intToStr(i),'Y',0);
    end;
и после этого кода обращение к Form1 переставало работать...

А delphi не должно случаем оповещать о таких нарушениях???, может какие опции выключены?

подскажите пожалуйста, что надо включить?

Последний раз редактировалось Stilet; 07.02.2011 в 13:57. Причина: пользуемся правкой
UnChanter вне форума Ответить с цитированием
Старый 04.02.2009, 00:24   #12
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Project - Options - Compiler - Range Checking - поставить галочку
_Engine_ вне форума Ответить с цитированием
Старый 04.02.2009, 00:37   #13
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

Цитата:
Сообщение от _Engine_ Посмотреть сообщение
Project - Options - Compiler - Range Checking - поставить галочку
Спасибо!!!
UnChanter вне форума Ответить с цитированием
Старый 04.02.2009, 01:03   #14
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

А еще лучше или задавать верхнюю границу массива в виде константы (типа const KoorCount = 26) и потом применять везде эту константу или использовать в циклах функцию High.
Jeni вне форума Ответить с цитированием
Старый 04.02.2009, 01:13   #15
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Jeni Посмотреть сообщение
или использовать в циклах функцию High.
привидите пожалуйста пример!
UnChanter вне форума Ответить с цитированием
Старый 04.02.2009, 01:13   #16
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Цитата:
Сообщение от Jeni Посмотреть сообщение
А еще лучше или задавать верхнюю границу массива в виде константы (типа const KoorCount = 26) и потом применять везде эту константу или использовать в циклах функцию High.
Почему только верхнюю? Тогда уж и нижнюю границу тоже надо задавать или пользовать
Код:
Low
_Engine_ вне форума Ответить с цитированием
Старый 04.02.2009, 01:19   #17
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от _Engine_ Посмотреть сообщение
Почему только верхнюю?..
Да это понятно. Просто обычно проблемы возникают именно с верхней границей, т.е. путаются с количеством элементов.
Jeni вне форума Ответить с цитированием
Старый 04.02.2009, 08:39   #18
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от UnChanter Посмотреть сообщение
привидите пожалуйста пример!
Код:
for i:=Low(koor) to High(koor) do
//...
s.Creator вне форума Ответить с цитированием
Старый 02.02.2011, 17:49   #19
Ewgen81
 
Регистрация: 02.02.2011
Сообщений: 8
По умолчанию

Прошу помощи разобраться с кодом, который мучаю довольно долго, т.к. не могу до конца понять классы с методами, свойствами и т.д.
Код:
unit Unit2;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Edit1:  TEdit;
    Edit2:  TEdit;
    Edit3:  TEdit;
    Radiogroup1: TRadiogroup;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
end;

type
  TChislo1 = class//(TMemo) // класс число1
  strict protected

    FChislo1: Real;  // 1 число
      function GetChislo: Real;  virtual;
      procedure SetChislo(Value: Real);  virtual;
  public
    property Chislo1: Real read GetChislo write SetChislo;
    constructor Create ();
    destructor Destroy (); override;
end;

type
  TChislo2 = class(TChislo1) // класс число2
  strict protected
    FChislo2: Real;  // 2 число
      function GetChislo: Real; Override;  // Замена абстрактного метода
      procedure SetChislo(Value: Real); Override;
   public
    property Chislo2: Real read GetChislo write SetChislo;
    //constructor Create (Index: Real);
end;

type
  TOtvet = class(TChislo2) // класс ответ
  strict protected
    FOtvet: Real;  // Результат вычисления
   //   function GetChislo: Real; Override;  // Замена абстрактного метода
  public
    property Otvet: Real read GetChislo;
  //  constructor Create (Index: Real);
end;

type
  TDeyst = class(TRadiogroup)
    strict protected
      FDeyst: real;
      function GetDeyst: Real;
      procedure SetDeyst(Value: Real);
    public
      property ItemIndex;
     // property S: real read GetDeyst write SetDeyst;
     // property V: real read GetDeyst write SetDeyst;
     // property U: real read GetDeyst write SetDeyst;
     // property D: real read GetDeyst write SetDeyst;
      //property Deyst[Index: Integer]: Integer read GetDeyst write SetDeyst;
end;

var
  Form1: TForm1;
  Edit1: TChislo1;
  Edit2: TChislo2;
  Edit3: TOtvet;
  //Radiogroup1: TDeyst;
  a,b,c:TChislo1;
 //x: Real;
  implementation

{$R *.dfm}

constructor TChislo1.Create();
begin
  Inherited Create();
   a:=Tchislo1.Create;
   b:=Tchislo2.Create;
   c:=TOtvet.Create;
   //FChislo1:=TChislo1.Create;
end;

//constructor TChislo2.Create;
//begin
//  FChislo2:=TChislo1.Create;
//  GetChislo;
//  SetChislo;
//end;

//constructor TOtvet.Create;
//begin
//  FOtvet:=TOtvet.Create;
//  GetChislo;
// SetChislo;
//end;

destructor TChislo1.Destroy;
begin
// clear();
 Form1.Free;
 inherited;
end;

function TChislo1.GetChislo: Real;
begin
  Result:=FChislo1;
end;

procedure TChislo1.SetChislo(Value: Real);
begin
  FChislo1:=Value;
end;

function TChislo2.GetChislo: Real;
begin
  Result:=FChislo2;
end;

procedure TChislo2.SetChislo(Value: Real);
begin
  FChislo2:=Value;
end;


function TDeyst.GetDeyst: Real;
begin
result:=Fdeyst;
//   case Index of
//    1:  x:=a.Chislo1+b.Chislo1;
//    2:  x:=a.FChislo1-b.FChislo1;
//    3:  x:=a.Chislo1*b.Chislo1;
//    4:  if b.Chislo1<>0 then
//          x:=a.Chislo1/b.Chislo1
//          else showmessage ('На ноль делить нельзя');
//  end;
end;


procedure TDeyst.SetDeyst(Value: Real);
begin
  Fdeyst:= Value;
end;



procedure TForm1.Button1Click(Sender: TObject);
var FDeyst:TDeyst;
z: real;
begin
  //z:=Tdeyst.Create;
  case Fdeyst.ItemIndex of
    0: z:=a.Chislo1+b.Chislo1;
    1: z :=a.Chislo1-b.Chislo1;
    2: z :=a.Chislo1*b.Chislo1;
    3: if b.Chislo1<>0 then
          z:=a.Chislo1/b.Chislo1
          else showmessage ('На ноль делить нельзя');
  end;


//  z.S:=a.Chislo1+b.Chislo1;
//  z.V :=a.FChislo1-b.FChislo1;
//  z.U :=a.Chislo1*b.Chislo1;
//  z.D := if b.Chislo1<>0 then
//          x:=a.Chislo1/b.Chislo1
//          else showmessage ('На ноль делить нельзя');
  Edit3.text:=FloatToStr(z);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Clear;
  Edit2.Clear;
  Edit3.Clear;
end;

end.
после запуска приложения компилятор выкидывает ошибку:
access violation at address 004b8fa5 на шаге "0: z:=a.Chislo1+b.Chislo1;" (163 строка). Помогите что делаю не так?
Ewgen81 вне форума Ответить с цитированием
Старый 03.02.2011, 04:30   #20
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Не создаёшь объект a.

P.S. Ну ты и намутил...
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address при выполнении end elsin Общие вопросы Delphi 5 30.01.2009 10:29
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access violation at address.. RegentM Общие вопросы Delphi 4 01.11.2007 03:46
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Fen1x Общие вопросы Delphi 8 13.10.2007 20:13
Возникает исключение "Access violation at address ... Наташка Общие вопросы Delphi 1 18.05.2007 12:16