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

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

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

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

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

Сообщение cav »

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
ошибки нет. Где у меня грабля и что я делаю не так ?
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Создавать нужно tSheme.Create, а не Sheme.Create
В первом случае создается объект, во втором вызывается constructor tSheme.Create как обычный метод, т.е. без создания объекта
cav
новенький
Сообщения: 28
Зарегистрирован: 16.11.2006 07:56:03
Откуда: Кемерово

Сообщение cav »

Спасибо !!! блин протупил не по детски....
Ответить