Q&A

  • record에서의 동적배열에 대한 질문이요...TmT
제목이 좀 이상하네요...-.-;;;

제가 하고 싶은건...

하나의 record를 정의 해 놓고...

다른 record에서 그 record를 이용해서 배열을 잡는 건데요...



소스는 아래와 같습니다...



type

sensor = record

Name : string;

ID : string;

Code : string;

Stats : string;

Real_Data : array[0..59] of integer;

Max_Data : data_sel;

Min_Data : data_sel;

Data_Alram : array[0..2] of integer;

special_data : array[0..4,0..4] of integer;

end;



type

tty = record

port : string;

rate : string;

parity : integer;

dbits : integer;

sbits : integer;

sflow : integer;

hflow : integer;

end;



type

rtu = record

rtu_tty : tty;

rtu_sen : array of sensor;

end;



var

Log_no : integer;

Sen_no : integer;

rtu_sel : Array of rtu;



이렇게 전역변수로 정의를 해 놓고...

setlength를 상요하여 배열의 크기를 정의 하는데요...



SetLength(rtu.rtu_sen,10); 이거하고...

SetLength(rtu_sel.rtu_sen,10); 이렇게도 해 봤는데 안되더군요...-.-;;;



SetLength(rtu_sel,10); 이 변수는 되는데...



음...에러메세지는...

Object or class type required 라고 나오네요...



record에서는 동적 배열을 못쓰는 건가요???



아니면 제가 잘 못 사용하는 건가요???



만약 이렇게 사용할 수 없다면 다른 방법이라도...



흑...이거 때문에 3일째 고생하고 있습니다...TmT





1  COMMENTS
  • Profile
    델맨 2001.07.18 22:40
    전준형 wrote:

    > 제목이 좀 이상하네요...-.-;;;

    > 제가 하고 싶은건...

    > 하나의 record를 정의 해 놓고...

    > 다른 record에서 그 record를 이용해서 배열을 잡는 건데요...

    >

    > 소스는 아래와 같습니다...

    >

    > type

    > sensor = record

    > Name : string;

    > ID : string;

    > Code : string;

    > Stats : string;

    > Real_Data : array[0..59] of integer;

    > Max_Data : data_sel;

    > Min_Data : data_sel;

    > Data_Alram : array[0..2] of integer;

    > special_data : array[0..4,0..4] of integer;

    > end;

    >

    > type

    > tty = record

    > port : string;

    > rate : string;

    > parity : integer;

    > dbits : integer;

    > sbits : integer;

    > sflow : integer;

    > hflow : integer;

    > end;

    >

    > type

    > rtu = record

    > rtu_tty : tty;

    > rtu_sen : array of sensor;

    > end;

    >

    > var

    > Log_no : integer;

    > Sen_no : integer;

    > rtu_sel : Array of rtu;

    >

    > 이렇게 전역변수로 정의를 해 놓고...

    > setlength를 상요하여 배열의 크기를 정의 하는데요...

    >

    > SetLength(rtu.rtu_sen,10); 이거하고...

    > SetLength(rtu_sel.rtu_sen,10); 이렇게도 해 봤는데 안되더군요...-.-;;;

    >

    > SetLength(rtu_sel,10); 이 변수는 되는데...

    >

    > 음...에러메세지는...

    > Object or class type required 라고 나오네요...

    >

    > record에서는 동적 배열을 못쓰는 건가요???

    >

    > 아니면 제가 잘 못 사용하는 건가요???

    >

    > 만약 이렇게 사용할 수 없다면 다른 방법이라도...

    >

    > 흑...이거 때문에 3일째 고생하고 있습니다...TmT

    >



    동적배열도 배열입니다. 먼저 가장 상위배열부터 하위배열 순으로 길이를

    할당해야 겠죠. 위에서는 가장 상위가 rtu_sel 이므로 이것부터 할당합니다.



    SetLength(rtu_sel,10);



    다음 rtu_sen 은 rtu_sel의 원소이고 위에서 10개 를 할당했으므로 10번 따로

    해줘야 합니다.



    for i:=0 to 9 do

    SetLength(rtu_sel[i].rtu_sen,10);