Q&A

  • 함수의 인자 100개에 대한 질문 다시 올립니다.
자세히 얘기를 해야 도움을 받을것 같을것 같아서 다시 올립니다.

ocx를 만드는데 메소드를 하나 정의를 했어요. 인자가 몇개가 들어올지 모르는 메소드입니다.

그래서 Variant형으로 100의 인자를 정하고 optional 프로퍼티를 가지게 했습니다.

이제 메소드가 호출되면(호출될때 인자의 수가 1개에서 98개 사이가 입력됩니다.) 다른 정보에 의해 인자가 몇개가 필요한지 판단한후 그만큼의 인자를 취해서 처리를 합니다. 그럴려면 for를 써서 처리를 하자 싶은데 인자에 접근하기가 쉽지 않군요.

첫째 인자는 어떤 처리를 하고 둘째 인자는 다른 처리를 하고 등등이 모두 동적입니다.

그러니 스트링 형태의 인자이름을 가지고 인자에 접근할 방법이 필요한데 찾아내기가 쉽지 않군요.

고수님들 부탁합니다.

3  COMMENTS
  • Profile
    최용일 2001.04.12 07:26
    아래에서도 말씀드렸지만 인자가 100개라면 함수 설계가 잘못된것입니다. 누차 얘기드리지만 배열(동적배열)을 이용하세요. 그럼 단 하나의 파라매터가지고 할 수 있습니다. 인덱스를 써서 for문돌리는 것두 쉽구요. 이렇게 하면 필요한 값들이 100000개라도 단하나의 파라매터 가지고 할 수 있습니다.



    설창원 wrote:

    > 자세히 얘기를 해야 도움을 받을것 같을것 같아서 다시 올립니다.

    > ocx를 만드는데 메소드를 하나 정의를 했어요. 인자가 몇개가 들어올지 모르는 메소드입니다.

    > 그래서 Variant형으로 100의 인자를 정하고 optional 프로퍼티를 가지게 했습니다.

    > 이제 메소드가 호출되면(호출될때 인자의 수가 1개에서 98개 사이가 입력됩니다.) 다른 정보에 의해 인자가 몇개가 필요한지 판단한후 그만큼의 인자를 취해서 처리를 합니다. 그럴려면 for를 써서 처리를 하자 싶은데 인자에 접근하기가 쉽지 않군요.

    > 첫째 인자는 어떤 처리를 하고 둘째 인자는 다른 처리를 하고 등등이 모두 동적입니다.

    > 그러니 스트링 형태의 인자이름을 가지고 인자에 접근할 방법이 필요한데 찾아내기가 쉽지 않군요.

    > 고수님들 부탁합니다.

  • Profile
    설창원 2001.04.12 07:36
    하지만 인자의 타입이 정수나 스트링이 될수 있기에(그것도 상황에 따라서 바뀝니다.) 배열을 쓸수는 없습니다. 함수설계도 고심을 많이 한 끝에 만들어 낸 것입니다.

    그리고 ocx를 만드는 거라 제한도 많구요. 아! 역시 프로그래밍은 힘들군요.





    최용일 wrote:

    > 아래에서도 말씀드렸지만 인자가 100개라면 함수 설계가 잘못된것입니다. 누차 얘기드리지만 배열(동적배열)을 이용하세요. 그럼 단 하나의 파라매터가지고 할 수 있습니다. 인덱스를 써서 for문돌리는 것두 쉽구요. 이렇게 하면 필요한 값들이 100000개라도 단하나의 파라매터 가지고 할 수 있습니다.

    >

    > 설창원 wrote:

    > > 자세히 얘기를 해야 도움을 받을것 같을것 같아서 다시 올립니다.

    > > ocx를 만드는데 메소드를 하나 정의를 했어요. 인자가 몇개가 들어올지 모르는 메소드입니다.

    > > 그래서 Variant형으로 100의 인자를 정하고 optional 프로퍼티를 가지게 했습니다.

    > > 이제 메소드가 호출되면(호출될때 인자의 수가 1개에서 98개 사이가 입력됩니다.) 다른 정보에 의해 인자가 몇개가 필요한지 판단한후 그만큼의 인자를 취해서 처리를 합니다. 그럴려면 for를 써서 처리를 하자 싶은데 인자에 접근하기가 쉽지 않군요.

    > > 첫째 인자는 어떤 처리를 하고 둘째 인자는 다른 처리를 하고 등등이 모두 동적입니다.

    > > 그러니 스트링 형태의 인자이름을 가지고 인자에 접근할 방법이 필요한데 찾아내기가 쉽지 않군요.

    > > 고수님들 부탁합니다.

  • Profile
    최용일 2001.04.12 08:12
    헐헐~~~~



    Variant쓰신다면서요? 여기에는 정수, 문자열, 실수, 배열, 날짜형, 디스페치인터페이스, 통화형등 자유자재로 들어갈 수 있습니다.



    아래 예제 참조해보세요... 헐헐~~~



    procedure TForm1.Button1Click(Sender: TObject);

    var

    vInteger: Integer;

    vDouble: Double;

    vString: string;

    V: array of Variant;

    begin

    SetLength(V, 3);

    vInteger := 99000;

    vDouble := 1.1001;

    vString := 'string';

    V[0] := vInteger;

    V[1] := vDouble;

    V[2] := vString;

    VarIn(V);

    SetLength(V, 0);



    VarIn([8888, 'string', 1111, 'string2', 'string3']);

    end;



    procedure TForm1.VarIn(V: array of Variant);

    var

    I: Integer;

    begin

    for I := 0 to High(V) do

    begin

    case VarType(V[I]) of

    varInteger: ListBox1.Items.Add(IntToStr(V[I]));

    varDouble: ListBox1.Items.Add(FloatToStr(V[I]));

    varString: ListBox1.Items.Add(V[I]);

    end;

    end;

    end;







    설창원 wrote:

    > 하지만 인자의 타입이 정수나 스트링이 될수 있기에(그것도 상황에 따라서 바뀝니다.) 배열을 쓸수는 없습니다. 함수설계도 고심을 많이 한 끝에 만들어 낸 것입니다.

    > 그리고 ocx를 만드는 거라 제한도 많구요. 아! 역시 프로그래밍은 힘들군요.

    >

    >

    > 최용일 wrote:

    > > 아래에서도 말씀드렸지만 인자가 100개라면 함수 설계가 잘못된것입니다. 누차 얘기드리지만 배열(동적배열)을 이용하세요. 그럼 단 하나의 파라매터가지고 할 수 있습니다. 인덱스를 써서 for문돌리는 것두 쉽구요. 이렇게 하면 필요한 값들이 100000개라도 단하나의 파라매터 가지고 할 수 있습니다.

    > >

    > > 설창원 wrote:

    > > > 자세히 얘기를 해야 도움을 받을것 같을것 같아서 다시 올립니다.

    > > > ocx를 만드는데 메소드를 하나 정의를 했어요. 인자가 몇개가 들어올지 모르는 메소드입니다.

    > > > 그래서 Variant형으로 100의 인자를 정하고 optional 프로퍼티를 가지게 했습니다.

    > > > 이제 메소드가 호출되면(호출될때 인자의 수가 1개에서 98개 사이가 입력됩니다.) 다른 정보에 의해 인자가 몇개가 필요한지 판단한후 그만큼의 인자를 취해서 처리를 합니다. 그럴려면 for를 써서 처리를 하자 싶은데 인자에 접근하기가 쉽지 않군요.

    > > > 첫째 인자는 어떤 처리를 하고 둘째 인자는 다른 처리를 하고 등등이 모두 동적입니다.

    > > > 그러니 스트링 형태의 인자이름을 가지고 인자에 접근할 방법이 필요한데 찾아내기가 쉽지 않군요.

    > > > 고수님들 부탁합니다.