Q&A

  • 용일님아 다시 한번부탁 드립니다
var

MyMem : HGlobal; 이고



MyMem 에



MyMem := (GlobalAlloc(GMEM_MOVEABLE, 2000));



을 할당하고



MyMem := HGlobal(Query1.Fields[1].asvariant);



라구 하면 형변환에러 라구 나오는데 이 형변환은 어떻케 해되여?

1  COMMENTS
  • Profile
    최용일 2001.02.24 04:40
    안녕하세요. 최용일입니다.



    메모리포인터하고 일반 변수하고 구별을 못하시는군요...



    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);

    >

    > 라구 하면 형변환에러 라구 나오는데 이 형변환은 어떻케 해되여?