var MyMem : HGlobal; 이고 MyMem 에 MyMem := (GlobalAlloc(GMEM_MOVEABLE, 2000)); 을 할당하고 MyMem := HGlobal(Query1.Fields[1].asvariant); 라구 하면 형변환에러 라구 나오는데 이 형변환은 어떻케 해되여?
최용일
•
2001.02.24 04:40
안녕하세요. 최용일입니다.
메모리포인터하고 일반 변수하고 구별을 못하시는군요...
MyMem := (Glob...
메모리포인터하고 일반 변수하고 구별을 못하시는군요...
MyMem := (GlobalAlloc(GMEM_MOVEABLE, 2000));
위에서 MyMem은 할당받은 메모리 영역의 선두번지가 들어가 있습니다.
그런데 아래와 같이 그 번지를 바꿔버리면 할당받은 메모리 영역을 잃어버리죠...
MyMem := HGlobal(Query1.Fields[1].asvariant);
아래와 같이 형변환하시면 되겠지만 도대체 GlobalAlloc을 사용하여 힙에 메모리를 할당
해서 사용하는 이유를 모르겠네요... 이 함수는 좀처럼 쓸일이 없는 함수인데...
Variant(Pointer(MyMem)^) := Query1.Fields[1].asvariant;
그냥 variant로 선언해서 사용하면 될텐데...
var
MyMem: Variant;
begin
MyMem := Query1.Fields[1].asvariant;
end;
^^ 항상 즐코하세요...
델초 wrote:
> var
> MyMem : HGlobal; 이고
>
> MyMem 에
>
> MyMem := (GlobalAlloc(GMEM_MOVEABLE, 2000));
>
> 을 할당하고
>
> MyMem := HGlobal(Query1.Fields[1].asvariant);
>
> 라구 하면 형변환에러 라구 나오는데 이 형변환은 어떻케 해되여?