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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2009, 15:53   #1
xell29
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 5
Вопрос Поля класса

Всем доброго времени суток!

Прошу прощения, за ламерский вопрос, но у меня такая проблема:

Я описываю класс:
Код:
Type
  AllGroups=class
  public
    i:integer;
    procedure IncCount;
    {бла, бла,бла}
end;

затем реализую процедуру IncCount:
procedure AllGroups.IncCount;
Begin
  Inc(self.i);
End;
И когда эта обращение доходит до этой процедуры, появляется сообщение:
Access violation at adress bla - bla. Write of address 00000004

причем сообщение не меняется если пишу без self, при инициализации этой переменной в конструкторе - та же ошибка...

В чем может быть проблема? Подскажите плиз!

Последний раз редактировалось Stilet; 18.06.2009 в 16:02.
xell29 вне форума Ответить с цитированием
Старый 18.06.2009, 16:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я описываю класс:
И все??? А вызываешь ты его методы как? Когда? И создан ли экземпляр класса? т.е. код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.06.2009, 16:09   #3
xell29
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
И все??? А вызываешь ты его методы как? Когда? И создан ли экземпляр класса? т.е. код в студию.
До вызова методов дело не доходит, только пытаюсь создать экземпляр класса...
Полное описание класс

Код:
Type
  AllGroups=class
  public
    i:integer;
    GroupsArcTemplates: array of GroupArcTemplate;
    constructor Create();overload;
    function GetAllNames:TStrings;
    procedure AddGroupToList(Group:GroupArcTemplate);
    procedure IncCount;
    function GetCount:integer;
end;
А вот описание всех методов и конструктора:
Код:
procedure AllGroups.IncCount;
Begin
  self.i:=self.i+1;
End;
function AllGroups.GetCount:integer;
Begin
  GetCount:=self.i;
End;


constructor AllGroups.Create();
Begin
  IncCount;
  SetLength(self.GroupsArcTemplates,GetCount);
  GroupsArcTemplates[i]:=GroupArcTemplate.Create();
End;

function AllGroups.GetAllNames:TStrings;
Var
  iterator:integer;
Begin
   For iterator:=0 to self.i-1 do
     Begin
       GetAllNames.Add(self.GroupsArcTemplates[iterator].NameGroupTemplate);
     End;
End;
Вызываю так:
Код:
Var
T:GroupArcTemplate;
G:AllGroups;
......................
Begin
...................
G.Create;                 //ошибка при этом вызове
G.AddGroupToList(T); // сюда уже не доходит
End;

Последний раз редактировалось xell29; 18.06.2009 в 16:15. Причина: Упустил некоторые моменты...
xell29 вне форума Ответить с цитированием
Старый 18.06.2009, 16:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты меня видимо полностью не понял. Я спрашивал у тебя не как ты класс описал а как ты с ним работаешь, т.е. вот что-то в этом роде:

Код:
var a:AllGroups;
begin
a:=AllGroups.Create;
 a.IncCount;
a.Free;
end;
Так работает

т.е. ты его хоть правильно создаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.06.2009, 16:18   #5
xell29
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты меня видимо полностью не понял. Я спрашивал у тебя не как ты класс описал а как ты с ним работаешь, т.е.....
Вот так вызываю:
Код:
Var
T:GroupArcTemplate;
G:AllGroups;
......................
Begin
...................
G.Create;                 //ошибка при этом вызове
G.AddGroupToList(T); // сюда уже не доходит
End;
xell29 вне форума Ответить с цитированием
Старый 18.06.2009, 16:22   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

классы создаются так
Код:
G:=AllGroups.Create
то есть в общем
Код:
<экземпляр>:=<название класса>.<конструктор с параметрами(например Create)>
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.06.2009, 16:28   #7
xell29
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 5
По умолчанию

Точно.... Спасибо огромное!!! А ведь я создавал классы.... Млин запарился... Теперь все работает!
xell29 вне форума Ответить с цитированием
Старый 18.06.2009, 16:35   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Млин запарился
Я так понимаю еще и пост мой читал невнимательно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.06.2009, 17:10   #9
xell29
Новичок
Джуниор
 
Регистрация: 18.06.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я так понимаю еще и пост мой читал невнимательно...
Наверное...Просто сначала не понял что я не указал.... Запарился на элементарном....
xell29 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 Класса Ambroyz Общие вопросы .NET 8 30.04.2009 10:49
Создание класса Dogmat Общие вопросы C/C++ 2 12.01.2009 14:32
Создание класса Stanislav Общие вопросы Delphi 8 15.05.2008 23:34
создание класса Siren Помощь студентам 1 07.05.2008 19:19
Создания Класса Mickle Общие вопросы Delphi 1 30.04.2007 00:44