var a:^string; b:string; begin b:='aaaa'; a:=@b; end; 위에서요 a가 b를 가리키는데... showmessage(a^) 라고 하면 b의 값을 불러오는 건 아는데엽... 어드레스를 구할려고 showmessage(a) 하니 에러가 뜨네엽... 어케 어드레스 구하나...
구창민
•
2000.01.28 22:29
장용준 wrote:
> var
> a:^string;
> b:string;
> begin
> b:='aaaa';
> a:=@b;
>
> end;
>...
> var
> a:^string;
> b:string;
> begin
> b:='aaaa';
> a:=@b;
>
> end;
>
> 위에서요 a가 b를 가리키는데...
> showmessage(a^) 라고 하면 b의 값을 불러오는 건 아는데엽...
> 어드레스를 구할려고 showmessage(a) 하니 에러가 뜨네엽...
> 어케 어드레스 구하나여?? ㅠ.ㅠ
> 초보가 질문드립니당......
델파이코리아에도 질문올리셨더군요.
질문은 한군데에만 올리세요.
그것이 네티즌의 매너일 것입니다.
질문하신 것은 ShowMessage(IntToStr(Integer(a))) 하시면 주소를 보시게 될거구요.
세그먼트 이야기도 하셨던데, 다음과 같은 함수들이 있습니다.
Addr(), Ptr(), Seg(), Ofs();
이중 Seg()와 Ofs()는 각각 인자로 주어진 변수의 주소에서
세그먼트와 옵셋 값을 돌려 주는 함수이므로 원하시는 것에 해당할거 같군요.
참고로, CSeg, DSeg, SSeg, SPtr 이 네개의 함수도 있는데,
이들은 각각 코드 세그먼트 레지스터(CS), 데이터 세그먼트 레지스터(DS),
스택 세그먼트 레지스터(SS), 스택 포인터(SP)의 현재 값을
돌려준다고 합니다. 아마도 위 함수들은 어셈블리 수준의 저급한 동작을 할때만
쓰여질거 같네요.
위 네개의 함수는 저도 한번도 써본적이 없으므로 설명은 못드립니다. ^^
그럼, 즐거운 프로그래밍 되시길~