Q&A

  • word형->byte형변환
word 형을 byte 형으로 어떻게 바꾸나요?

word 형 포인트 변수에서 byte 형 포인트 변수로 바꾸려합니다.



DLL을 호출하는데 word형 포인터로 데이터를 읽고 그 데이터 버퍼를

byte형으로 DLL에 넘겨줘야합니다.







Buffer:array [0..1000] of word];

buffer_Point:^longint;



// 버튼1 이벤트 WORD형 데이터 읽기

var

Buffer_Size:longint;



begin



Buffer_Point:=@Buffer;

Buffer_size:=LoadBuffer(longint(Buffer_point));



// 버튼2 이벤트 바이트형 데이터 주기

var

Buffer_Size:longint;



begin



//여기서 변수 전환이 있어야할것같은데..

Buffer_Point:=@Buffer;

Buffer_size:=StoreBuffer(longint(Buffer_point));





C에서는 이렇게 하는것같아요.

Buffer_Size=((Byte*)Buffer);



모두들 행복하세요..

1  COMMENTS
  • Profile
    여영식 2000.01.12 18:57
    제가 볼때는 아무런 문제가 없어 보입니다.

    StoreBuffer 인자값으로 전달되는 것은 LongInt형의 주소를 전달하는 것이기 때문에

    Word 형이든 Byte형이든 구분하지는 않습니다. StoreBuffer 의 선언은 다음과 같을 경우

    에 한해서 지요.



    function StoreBuffer(Buffer_point: LongInt): Integer;



    단지 Dll 측에서 LongInt형의 값을 받아 Byte포인터 형으로 변환해주는 로직은 필요하지요.

    따라서 Dll 측에서 고려되어야 할 사항이고 호출하는 쪽에서는 관계가 없는것 같습니다.



    변환은 아마도 이런 코드가 될것입니다.



    var

    ByteBuffer: PByte;



    ByteBuffer := Pointer(Buffer_Pointer);



    좀더 자세한 사항은 직접 사용하신 StoreBuffer 함수의 선언 부분이 있어야겠습니다.



    ---



    김동식 wrote:

    > word 형을 byte 형으로 어떻게 바꾸나요?

    > word 형 포인트 변수에서 byte 형 포인트 변수로 바꾸려합니다.

    >

    > DLL을 호출하는데 word형 포인터로 데이터를 읽고 그 데이터 버퍼를

    > byte형으로 DLL에 넘겨줘야합니다.

    >

    >

    >

    > Buffer:array [0..1000] of word];

    > buffer_Point:^longint;

    >

    > // 버튼1 이벤트 WORD형 데이터 읽기

    > var

    > Buffer_Size:longint;

    >

    > begin

    >

    > Buffer_Point:=@Buffer;

    > Buffer_size:=LoadBuffer(longint(Buffer_point));

    >

    > // 버튼2 이벤트 바이트형 데이터 주기

    > var

    > Buffer_Size:longint;

    >

    > begin

    >

    > //여기서 변수 전환이 있어야할것같은데..

    > Buffer_Point:=@Buffer;

    > Buffer_size:=StoreBuffer(longint(Buffer_point));

    >

    >

    > C에서는 이렇게 하는것같아요.

    > Buffer_Size=((Byte*)Buffer);

    >

    > 모두들 행복하세요..