variant Records 를 사용할려고 하는데 case 문에서
각각의 1,2,3 경우가 있다고 할때,
예를 들어
1에서는 A,B라는 이름의 변수를 선언하고, 2에서는 A,C라는 이름의 변수,
3에서는 B,C라는 이름의 변수를 선언한다고 할때,
컴파일 하면 2에서 A선언되는 라인에서 A가 Identifier redeclared 라고 나오는데
해결할 방법 없는지 궁금합니다.
그냥 생각해보면 1경우때 하고 2 경우때하고는 다른경우(둘중에 한 경우만 사용되는데..)인데 왜 중복되었다는건지 잘 모르겠네요.
> variant Records 를 사용할려고 하는데 case 문에서
> 각각의 1,2,3 경우가 있다고 할때,
> 예를 들어
> 1에서는 A,B라는 이름의 변수를 선언하고, 2에서는 A,C라는 이름의 변수,
> 3에서는 B,C라는 이름의 변수를 선언한다고 할때,
> 컴파일 하면 2에서 A선언되는 라인에서 A가 Identifier redeclared 라고 나오는데
> 해결할 방법 없는지 궁금합니다.
> 그냥 생각해보면 1경우때 하고 2 경우때하고는 다른경우(둘중에 한 경우만 사용되는데..)인데 왜 중복되었다는건지 잘 모르겠네요.
이렇게 하셨다는 말씀이죠?
type
Trec = record
case
1:(A,B : integer);
2:(A,C : integer);
3:(B,C : integer);
end;
둘중에 한경우만 사용된다고 하셨는데 아닙니다. 사용할땐 모든 필드가
동시에 사용될수 있습니다. 예를들면...
var a:Trec;
....
a.B:=123;
여기서 B 라는 필드가 1번의 B 인지 3번의 B 인지 알수없게 됩니다.
해결방법은 모든 필드명을 다르게 주거나 레코드를 여러개로 나누는방법이 있습니다.