Q&A

  • 컴포넌트 속성이 Enumerated 타입일때 공백을 입력하려면?
Enumerated 타입에서 아무값도 넣어 주지 않을려면 어떻게 해야 하나요?



컴포넌트의 속성을 Enumerated 타입으로 만들었는데 아무값도 넣고 싶지 않은데 공백을 줄수가 없습니다.



그리고 한가지 더요



Enumerated 타입에서 값의 비교는 첨자로는 하지 못하나요?



예를 들면



TTEST = (FIRST, SECOND, THIRD); // DEGREE의 타입으로 선언

...

DEGREE : TTEST;



컴포넌트의 Enumerated 타입 속성(DEGREE) 에서 FIRST를 선택했다고 하면..





AA : TEST;



IF EDIT1.DEGREE = AA(1) THEN // 여기서 첨자 비교가 안됩니다.





어떤식으로 해야 좋을까요?





감사합니다...



2  COMMENTS
  • Profile
    구창민 2000.03.31 01:39
    김진호 wrote:

    > Enumerated 타입에서 아무값도 넣어 주지 않을려면 어떻게 해야 하나요?

    >

    > 컴포넌트의 속성을 Enumerated 타입으로 만들었는데 아무값도 넣고 싶지 않은데 공백을 줄수가 없습니다.

    >

    > 그리고 한가지 더요

    >

    > Enumerated 타입에서 값의 비교는 첨자로는 하지 못하나요?

    >

    > 예를 들면

    >

    > TTEST = (FIRST, SECOND, THIRD); // DEGREE의 타입으로 선언

    > ...

    > DEGREE : TTEST;

    >

    > 컴포넌트의 Enumerated 타입 속성(DEGREE) 에서 FIRST를 선택했다고 하면..

    >

    >

    > AA : TEST;

    >

    > IF EDIT1.DEGREE = AA(1) THEN // 여기서 첨자 비교가 안됩니다.

    >

    >

    > 어떤식으로 해야 좋을까요?

    >

    >

    > 감사합니다...

    >



    안녕하세요~ 구창민입니다.



    먼저 두번째 질문부터 답변드리겠습니다.



    값의 비교를 첨자로 하시길 질문하셨는데요.

    그 형으로 선언된 변수를 배열로 만드시면 됩니다.

    사실, 그 형으로 선언된 변수는 그 값들 중 한가지만을 가지기 때문이죠.

    그러니 첨자로 비교하려면, 그 변수를 배열로 선언하여 여러값을 가지게 해야죠.



    예를 들어 써 보면,



    Type TTest = (One, Tow, Three);

    var AA:array[0..2] of Ttest;

    i: integer;

    begin

    AA[0]:=One;

    if AA[0]=One THEN ShowMessage('같다');

    end;

    이런 형태가 될거 같네요.

    또는, 컴파일러가 내부적으로 숫자로 인식하기 때문에

    이렇게 써도 될겁니다.



    if TTest(0)=One then ...



    으음.. 이해가 되셨나 모르겠습니다.



    그리고, 첫번째 질문의 답은

    아까도 말씀드렸지만, 그 형으로 선언된 변수는 그 값들 중 한가지만을 가집니다.

    그런데 구지 아무내용도 대입되지 않게 하시겠다면,

    변수선언만 달랑 해 두고 사용을 안하면 그렇게 되겠지요.



    아니면.. 배열로 선언한 다음 첨자값을 없는것을 넣어 버리면 될거 같네요.

    예를 들어 첨자값에 -1값 같은거요. ^^ (이래두 되나 몰겠네요.)

    이런식으로



    AA[0]=TTest(-1);



    음.. 이런짓은 안해봤는데 될거 같습니다. ^^



    그럼~ 즐거운 프로그래밍 되시길~



  • Profile
    유수 2000.03.31 01:38


    열거형은 요소의 차례대로 값이 부여됩니다.(0부터..)

    값의 범위를 갖는 Integer이라 보면되져.

    그러니 아무 값도 주지 않을 수가 없어여..

    Integer형 역시 선언되면, 쓰레기 숫자값이라도 가지고 있는 것과 마찬가지이지여..

    일반적인 방법으로 컴포넌트 프로퍼티 중에 열거형이 있을때 값이 없다는 것을

    표시 하기 위해 -None등의 요소를 추가해 씁니다.

    예를 들면

    TTEST = (NONE, FIRST, SECOND, THIRD);



    T: TTEST;

    T := NONE;



    등의 형태로 말이져..

    열거형의 각 요소가 0 부터 시작되는 숫자값이기 때문에

    Ord(열거형 변수)등으로 숫자값으로 전환하여 case 문 등에 쓸수 있겠죠.

    비교시 첨자형으로도 쓸수는 있어여.. 질문에 써 주신 예는 틀린예이고

    IF EDIT1.DEGREE = TTEST(1) then 등의 형식으로 쓰면 됩니다.

    답변 되었기를...



    김진호 wrote:

    > Enumerated 타입에서 아무값도 넣어 주지 않을려면 어떻게 해야 하나요?

    >

    > 컴포넌트의 속성을 Enumerated 타입으로 만들었는데 아무값도 넣고 싶지 않은데 공백을 줄수가 없습니다.

    >

    > 그리고 한가지 더요

    >

    > Enumerated 타입에서 값의 비교는 첨자로는 하지 못하나요?

    >

    > 예를 들면

    >

    > TTEST = (FIRST, SECOND, THIRD); // DEGREE의 타입으로 선언

    > ...

    > DEGREE : TTEST;

    >

    > 컴포넌트의 Enumerated 타입 속성(DEGREE) 에서 FIRST를 선택했다고 하면..

    >

    >

    > AA : TEST;

    >

    > IF EDIT1.DEGREE = AA(1) THEN // 여기서 첨자 비교가 안됩니다.

    >

    >

    > 어떤식으로 해야 좋을까요?

    >

    >

    > 감사합니다...

    >