Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > E2008 Incompatible types


Автор: dizzy1984 13.4.2009, 08:37
Доброе время суток.
Работа с указателями. Создаю 2 указателя, пытаюсь присвоить один другому. Ошибка "несовместимые типы".
Код

type rec1 = record
  i : integer;
end;


var
  p1 : ^rec1;
  p2 : ^rec1;


begin
p2 := p1;
end.

Цитата

[Pascal Error] Unit1.pas(49): E2008 Incompatible types

Есть оформить указатель на структуру как тип, это компилируется. Разъясните в чем проблема.

Автор: CodeMonkey 13.4.2009, 10:07
По определению. Это разные типы.

Надо:
Код
type
  TRec1 = record
    i : integer;
  end;  
  PRec1 = ^TRec1;


Могли бы и в справку заглянуть.


Автор: aliks 13.4.2009, 10:13
Код

type
  rec1 = record
    i : integer;
  end;
  prec = ^rec1;

var
  p1 : prec;
  p2 : prec;
begin
  p1:=p2;
end;


Любимая кнопка F1

Автор: dizzy1984 13.4.2009, 15:33
Ясно. Но типы-то не разные (по крайней мере пишутся одинаково...)
Всем спасибо.

Автор: CodeMonkey 13.4.2009, 17:27
Цитата
Но типы-то не разные

Бинарно - одинаковы. С точки зрения системы типов языка - разные.

Пример.

Считаются ли, по-вашему, такие типы одинаковыми или разными?

Код
type
  SomeOtherType = Integer;

  T1 = Integer;

  и

  T2 = SomeOtherType;

  T3 = record
    T: Integer;
  end;

  и 

  T3 = record
    T: SomeOtherType;
  end;

  TC1 = class(TPersistent)
  public
    F1: Integer;
  end;

  и

  TC2 = class(TPersistent)
  public
    F1: Integer;
  end;

Автор: dizzy1984 20.4.2009, 07:19
Ясно, ясно, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)