- Код: Выделить всё
- TBase(obj).SomeVirtualMethod();
Метод переопределен в TChild, он и вызывается, но Self почему то становится nil
 
 А вот так нормально работает:
- Код: Выделить всё
- TChild(obj).SomeVirtualMethod();
FPC 2.2.2 и 2.2.4
Модератор: Модераторы
TBase(obj).SomeVirtualMethod();
 
 TChild(obj).SomeVirtualMethod();

type
  TSample = class
  protected
    Val: String;
    procedure proc;
  end;
procedure TSample.proc;
var
 Val: Integer;
begin
  Val:=123; // Это обращение к локальной переменной
  self.Val:='Привет!';  // Это обращение к переменной класса
end;
type
  TSample = class
   public
      constructor Create; 
  end;
var
  List: TList;
constructor TSample.Create;
begin
  List.Add(Self);
end;

Max Rusov писал(а):FPC 2.2.4 - не подтверждается.
Код в студию.

Mr.Smart писал(а):Возможно я перемудрил
function TChannelAccount.SetStatus(iNewStatus: int): int;
begin
  Result:=0;
  if _active then //вот тут вылетает
  begin
//дальше много кода еще

AlexVinS писал(а):Не это все понятно. Конкретно глюк появляется в AV при обращении к полю объекта.
- Код: Выделить всё
function TChannelAccount.SetStatus(iNewStatus: int): int;
begin
Result:=0;
if _active then //вот тут вылетает
begin
//дальше много кода еще
Mr.Smart писал(а):AlexVinS писал(а):Не это все понятно. Конкретно глюк появляется в AV при обращении к полю объекта.
- Код: Выделить всё
function TChannelAccount.SetStatus(iNewStatus: int): int;
begin
Result:=0;
if _active then //вот тут вылетает
begin
//дальше много кода еще
Это свидетельствует о том, что класс несоздан. Посмотрите в коде внимательно происходит ли вызов контструктора класса...
      function StubSetStatus (p1: PPROTO_INTERFACE; iNewStatus: Integer): Integer; cdecl;
      begin
           Result := TMirandaAccount(p1.obj).SetStatus(iNewStatus); //тут все нормально и p1 и p1.obj  указывают на то что нужно, а внутри SetStatus нет.
      end;

Mr.Smart писал(а):Остановитесь в методе SetStatus и сравните значения реального адреса объекта и значение Self.

Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 1