Q&A

  • 구조체에 관한 질문 입니다.
일단 이렇게 선언되어 있다고 가정을 하구요..

데이터는

'1213456'

'12234567890'

'12345678901ABCD'

이렇게 있다고 하면요..

저기 Case 문에서 분기를 하게 되는것 같은데요..

제가 원하는 답이 안나옵니다. 제가 잘못 하고 있는건지 원래

그렇게 나오는지 알수가 없네요..

제가 원하는 답은

case에서 '1'인경우는 '1213456' 에서

B_Rec.B_Rec_1 -> '12'

B_Rec.aa -> '1'

B_Rec.aaa.Rec_1 -> '34'

B_Rec.aaa.Rec_2 -> '56'

size는 7가 되야 하구요..



'2'인경우는 '12234567890'에서

B_Rec.B_Rec_1 -> '12'

B_Rec.aa -> '2'

B_Rec.bbb.Rec_1 -> '34'

B_Rec.bbb.Rec_2 -> '56'

B_Rec.ccc.Rec_1 -> '78'

B_Rec.ccc.Rec_2 -> '90'

size는 12가 되야 하구요..



'3'인경우는 '12234567890ABCD'에서

B_Rec.B_Rec_1 -> '12'

B_Rec.aa -> '2'

B_Rec.ddd.Rec_1 -> '34'

B_Rec.ddd.Rec_2 -> '56'

B_Rec.eee.Rec_1 -> '78'

B_Rec.eee.Rec_2 -> '90'

B_Rec.fff.Rec_1 -> 'AB'

B_Rec.fff.Rec_2 -> 'CD'

size는 15가 되야 하구요..



여기에서

case '1'일때는 size가 7 이 되어야 하구요.

case '2'일때는 size가 12 이 되어야 하구요.

case '3'일때는 size가 15 이 되어야 하구요.

제가 몰 잘못 알고 있다면 지적을 해 주세요..

이건 제가 첨 써보는 거라서..

아참 move함수 쓰고 있습니다.

그럼 답변 기다립니다.

행복하세요..





2  COMMENTS
  • Profile
    정성훈 2001.02.10 22:30
    쪼기 wrote:

    > 일단 이렇게 선언되어 있다고 가정을 하구요..

    > 데이터는

    > '1213456'

    > '12234567890'

    > '12345678901ABCD'

    > 이렇게 있다고 하면요..

    > 저기 Case 문에서 분기를 하게 되는것 같은데요..

    > 제가 원하는 답이 안나옵니다. 제가 잘못 하고 있는건지 원래

    > 그렇게 나오는지 알수가 없네요..

    > 제가 원하는 답은

    > case에서 '1'인경우는 '1213456' 에서

    > B_Rec.B_Rec_1 -> '12'

    > B_Rec.aa -> '1'

    > B_Rec.aaa.Rec_1 -> '34'

    > B_Rec.aaa.Rec_2 -> '56'

    > size는 7가 되야 하구요..

    >

    > '2'인경우는 '12234567890'에서

    > B_Rec.B_Rec_1 -> '12'

    > B_Rec.aa -> '2'

    > B_Rec.bbb.Rec_1 -> '34'

    > B_Rec.bbb.Rec_2 -> '56'

    > B_Rec.ccc.Rec_1 -> '78'

    > B_Rec.ccc.Rec_2 -> '90'

    > size는 12가 되야 하구요..

    >

    > '3'인경우는 '12234567890ABCD'에서

    > B_Rec.B_Rec_1 -> '12'

    > B_Rec.aa -> '2'

    > B_Rec.ddd.Rec_1 -> '34'

    > B_Rec.ddd.Rec_2 -> '56'

    > B_Rec.eee.Rec_1 -> '78'

    > B_Rec.eee.Rec_2 -> '90'

    > B_Rec.fff.Rec_1 -> 'AB'

    > B_Rec.fff.Rec_2 -> 'CD'

    > size는 15가 되야 하구요..

    >

    > 여기에서

    > case '1'일때는 size가 7 이 되어야 하구요.

    > case '2'일때는 size가 12 이 되어야 하구요.

    > case '3'일때는 size가 15 이 되어야 하구요.

    > 제가 몰 잘못 알고 있다면 지적을 해 주세요..

    > 이건 제가 첨 써보는 거라서..

    > 아참 move함수 쓰고 있습니다.

    > 그럼 답변 기다립니다.

    > 행복하세요..

    >

    >



    안녕하세요.

    음 질문이 헷갈리네요.

    원하시는게 어떤건지..쩝.

    사이즈를 구하신다면 Length 를 쓰시면 되구요..

    데이타를 자르시는 거라면

    형식이 일정한거 보니 Copy 쓰셔도 될것 같은데요.

    그럼..



  • Profile
    쪼기 2001.02.11 00:06
    일단은요.. copy 명령을 안쓰려고 합니다.

    copy를 쓰서 쓰기에는 넘 멤버가 많아서요..

    그래서 한방에 move로 작업 하려고 하네요..

    저렇게 하면요..

    '12__13456' 이렇게 나오거든요..

    저기 under bar들어 간 부분 보이시지요..저기에 공백이 들어 가게 되네요..

    제가 추측 하건데 아마도 case 문에 잡힌 멤버 때문에 그런것 같아요..

    이것을 어찌 할까요..?

    그럼 답변 부탁 합니다.



    type

    A_Rec = record

    Rec_1 : array[1..2]of char;

    Rec_2 : array[1..2]of char;

    end;



    B_Rec = record

    B_Rec_1 : array[1..2]of char;

    case aa : char of

    '1' : (aaa : A_Rec;

    xxx : array[1..2]of char;);

    '2' : (bbb : A_Rec;

    ccc : A_Rec;

    yyy : array[1..2]of char;);

    '3' : (ddd : A_Rec;

    eee : A_Rec;

    fff : A_Rec;

    zzz : array[1..2]of char;);

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    o_str : string;

    aa : B_Rec;

    a_str : string;

    begin

    o_str := '1213456';

    fillchar(aa, sizeof(B_Rec), $20);

    move(o_str[1], (@aa)^, length(o_str));

    Setlength(a_str, sizeof(B_Rec));

    move(aa, a_str[1], sizeof(B_Rec));

    memo1.lines.add(a_str);

    memo1.lines.add(aa.B_Rec_1);

    memo1.lines.add(aa.aa);

    memo1.lines.add(aa.aaa.Rec_1);

    memo1.lines.add(aa.aaa.Rec_2);

    end;



    여기에서 a_str 하고 하나 하나 따로 따로 찍은 값들이 틀리게 나오네요..

    참 이상하네요..ㅠ.ㅠ