Непонятное поведение при вызове метода класса

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Непонятное поведение при вызове метода класса

Сообщение cav » 06.03.2007 15:01:18

Win 2000 lazarus 0.9.21 SVN:10342
Имеется некий объект определенный следующим образом:
Код: Выделить всё
     TSheme=class(TObject)
      FCountShemeItem:integer;
      FKeyShemeX:array of TKeySheme;
     public
      constructor Create;
      destructor Destroy;override;
      procedure AddKeyShemeItem(KeySheme:tKeySheme);
      ...........................
     published
       ............................
     end;   
     
constructor tSheme.Create;
begin
  inherited Create;
  FCountShemeItem:=0;
  SetLength(FKeyShemeX,0);
end; 

procedure tSheme.AddKeyShemeItem(KeySheme:tKeySheme);
begin
   addlog(CFG.LogFile,'new key22'); // это для отладки
   FCountShemeItem:=FCountShemeItem+1;
// остальное поскипано
end;         


создаем объект по Sheme.Create;
пытаемся вызвать метод AddKeyShemeItem
выдает Project raised exception class 'EXTERNAL:SIGSEGV'
комментируем FCountShemeItem:=FCountShemeItem+1
ошибки нет. Где у меня грабля и что я делаю не так ?
cav
новенький
 
Сообщения: 28
Зарегистрирован: 16.11.2006 08:56:03
Откуда: Кемерово

Сообщение shade » 06.03.2007 15:44:44

Создавать нужно tSheme.Create, а не Sheme.Create
В первом случае создается объект, во втором вызывается constructor tSheme.Create как обычный метод, т.е. без создания объекта
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение cav » 07.03.2007 12:38:38

Спасибо !!! блин протупил не по детски....
cav
новенький
 
Сообщения: 28
Зарегистрирован: 16.11.2006 08:56:03
Откуда: Кемерово


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

Рейтинг@Mail.ru