제가 프로그래밍하다가 에러가 나서 질문을 하게 되었습니다.
동적 배열에 관한 질문입니다.
문법적으로 example 1
var
a, b : array of TStrings;
...
begin
...
setlength(a, 10);
a := b;
일 경우 에러가 없습니다.
그러나 example 2의 경우 맞지않은 type이라는 에러 메세지가 나타납니다.
example 2
var
a : array of TStrings;
b : array of TStrings;
...
begin
...
setlength(a, 10);
a := b;
왜 이런 에러가 발생되는지요? 그리고 a, b를 결코 같이 쓸수 없는 경우의 변수일 경우 어떻게 b의 값을 a에 집어 넣을 수 있는지요?
답변 부탁드립니다.
> 제가 프로그래밍하다가 에러가 나서 질문을 하게 되었습니다.
> 동적 배열에 관한 질문입니다.
> 문법적으로 example 1
>
> var
> a, b : array of TStrings;
> ...
> begin
> ...
> setlength(a, 10);
> a := b;
>
> 일 경우 에러가 없습니다.
> 그러나 example 2의 경우 맞지않은 type이라는 에러 메세지가 나타납니다.
>
> example 2
>
> var
> a : array of TStrings;
> b : array of TStrings;
> ...
> begin
> ...
> setlength(a, 10);
> a := b;
> 왜 이런 에러가 발생되는지요? 그리고 a, b를 결코 같이 쓸수 없는 경우의 변수일 경우 어떻게 b의 값을 a에 집어 넣을 수 있는지요?
>
> 답변 부탁드립니다.
안녕하세요~
a,b: array of TStrings;
이렇게 선언하였을때는 a와 b가 같은 타입이지만...
a : array of TStrings;
b : array of TStrings;
이렇게 하면 a와 b는 같은구조를 가진 다른 타입이 됩니다.
이것은 동적 배열에만 해당되는것이 아니고 파스칼문법의 기본적인 특징입니다.
만약 따로따로 선언하시려면 이렇게 해보세요.
type TStringsArray = array of TStrings;
var
a : TStringsArray;
b : TStringsArray;
그리고 a:=b 라고 하셨는데 이것은 복사하는것이 아니고 가리키는것입니다.
즉, a의 내용을 수정하면 b도 바뀌게 됩니다.
즐플~~