제목이 좀 이상하네요...-.-;;;
제가 하고 싶은건...
하나의 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
> 제목이 좀 이상하네요...-.-;;;
> 제가 하고 싶은건...
> 하나의 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);