Q&A

  • Pointer로 Record를 Mapping할때 Error처리는 ?


안녕하십니까?.

Pointer로 Record를 지적하여 아래와 같이 사용하고자 하는데 잘못된 연산이라는

Error가 발생합니다. 여러 고수님들의 조언 부탁드립니다.



Unit Appc;

type

TIHRec11 = record

name: array[0..299]of char; {!~300 Byte / ~300 Byte }

so1: byte;

nameh: array[0..7]of char;

si1: byte;

end;



var

P : Pointer;

cp : Pchar;



procedure appc.FormCreate(Sender: TObject);

begin

GetMem( P, 311 );

cp := P;

end;



procedure appc.FormDestroy(Sender: TObject);

begin

FreeMem( P, 311 );

end;



procedure appc.DataProcess;{데이타처리부분}

begin

P := cp; {cp에는 위의 TIHRec11와 같은 구조의 Data가 있슴 }

Lname.caption := TIHRec11(P^).name; <--- Error 발생

Lnameh.caption := TIHRec11(P^).nameh;

end;

..



위에서 Trace를 Lname.caption, Lnameh.caption 에 위치시켜보면

access invaild = OF34x000... ffffffff 라고 나타나면서 잘못된 연산

처리라는 error가 나타납니다.

어떻게 해야하나요. 많은가르침을 부탁드립니다.





0  COMMENTS