Pascal назначить переменную для поля записи в RAD Studio XE - PullRequest
0 голосов
/ 10 апреля 2020

Кто-нибудь может прокомментировать, в чем здесь проблема?

Ошибка компилятора говорит: Ошибка: Несовместимые типы: 'Array' и 'name' Ошибка в строке: Student.s_name: = n;

Код следующий.

program datafiles;

Uses WinCRT;

Type
    studentRecord = Record
        s_name: packed array[0..30] of char;
    end;

    name = packed array[0..30] of char;

Var
    Student: StudentRecord;
    n: name;

Begin

    readln(n);
    Student.s_name:=n;

end.

1 Ответ

2 голосов
/ 11 апреля 2020

Проблема назначения описана в языковой документации Delphi:

Типы и назначения массива

Массивы совместимы только с назначением если они относятся к одному и тому же типу. Поскольку язык Delphi использует эквивалентность имен для типов, следующий код не будет компилироваться.

var
  Int1: array[1..10] of Integer;
  Int2: array[1..10] of Integer;
    ...
  Int1 := Int2; 

Чтобы заставить назначение работать, объявите переменные как :

var
  Int1, Int2: array[1..10] of Integer; 

или:

type IntArray = array[1..10] of Integer;
var
  Int1: IntArray;
  Int2: IntArray;
...