Не могу присвоить char массиву в Delphi - PullRequest
0 голосов
/ 05 мая 2019

Есть распечатка процедуры

var
  A, B: array [1..5] of String;
  Ch: Char;
begin
  A[1] := 'Hello Kitty';
  Ch := A[1, 1];
  B[1, 1] := A[1, 1];
  ReadLn;
end.

Линия Ch := A[1, 1] прекрасно работает, но B[1, 1] := A[1, 1] нет. В чем может быть проблема?

1 Ответ

4 голосов
/ 05 мая 2019

При выполнении строки:

B[1, 1] := A[1, 1];

вы получаете ошибку диапазона или нарушение прав доступа.

Это потому, что B - это массив управляемого типа, которыйинициализируется компилятором с пустыми строками (каждая равна нулю).

Ошибка диапазона означает, что вы пытаетесь получить доступ к строковому элементу за пределами границ, то есть B[1,1] (или B[1][1]).Он появится, если включена опция компилятора «Проверка диапазона».В противном случае вы получите нарушение прав доступа, поскольку вы получаете доступ к области памяти, которая не выделена.


Чтобы заставить ее работать, выполните что-то вроде:

B[1] := A[1,1];  // Or B[1] := A[1][1];  
...